VBA中使用JavaScript脚本语言解析JSON数据

JSON:JavaScript 对象表示法(JavaScript Object Notation)

和xml相似,都是文本形式(保存在文本文件中或字符串等形式),比如:

jsstr = {"系别":"历史系","班级":"一班",
           "学员":[
                   {"姓名":"张三","年龄":25,"性别":"男"},
                   {"姓名":"李四","年龄":20,"性别":"男"},
                   {"姓名":"小明","年龄":20,"性别":"女"}
                  ]
          }
        

1、{}表示对象,[]表示数组,数组的成员可以是对象,使用“属性:值”键值对形式表示属性。

本例中jsstr对象有三个属性:系别,班级,学员。其中“学员”属性的值是一个包含三名学员对象的数组,

2、相对XML更轻量,xml的标签比数据还要多。

在VBA中可以使用Javascript解析json对象:

先引用Microsoft Script Control 1.0,文件是:msscript.ocx

 1 Sub TestJson()
 2 Dim jsstr As String
 3
 4 ‘vb搞个字符串要加n个引号,真是烦人
 5 jsstr = "{""系别"":""历史系"",""班级"":""一班""," & _
 6          """学员"":[{""姓名"":""张三"",""年龄"":25,""性别"":""男""}," & _
 7                    "{""姓名"":""李四"",""年龄"":20,""性别"":""男""}," & _
 8                    "{""姓名"":""小明"",""年龄"":20,""性别"":""女""}" & _
 9                   "]" & _
10          "}"
11
12 ‘前期绑定方便使用智能提示
13 Dim scobj As New MSScriptControl.ScriptControl
14 Dim age As Integer
15
16 ‘ScriptControl使用的脚本语言。除了js,也支持Vbscript
17 scobj.Language = "JavaScript"
18
19 ‘往脚本里添加代码,参数是字符串
20 scobj.AddCode ("var query = " & jsstr)
21
22 ‘JSON对象表示成员可以用:对象.属性
23 ‘属性如果是个包含多个对象的数组,可以使用索引表示:对象.属性[0]
24 ‘Eval是表达式求值
25 age = scobj.Eval("query.学员[2].年龄")
26
27 Debug.Print "历史系一班的第3个学员的年龄是" & age & "岁"
28
29 End Sub

1、javascript是弱类型语言。定义变量的关键字是var

var x;
var y = 10 ;
var name = "张三" ;

2、Eval是表达式求值,参数是字符串,如果是解析一个JSON对象,最好是使用一对括号把文本包括住,这样可以避免语法错误。

var obj = eval ("(" + jsstr + ")");

3、CodeObject方法,暴露JSON对象给VB。(这个方法没摸透)

 1 Sub TestJson2()
 2 Dim jsstr1 As String
 3 Dim jsstr2 As String
 4 jsstr1 = "{""姓名"":""张三"",""性别"":""男""}"
 5 jsstr2 = "{""姓名"":""小花"",""性别"":""女""}"
 6
 7 Dim scobj As New MSScriptControl.ScriptControl
 8 scobj.Language = "JavaScript"
 9 scobj.AddCode ("var query1 = " & jsstr1)    ‘query1,query2分别是两个Javascript对象
10 scobj.AddCode ("var query2 = " & jsstr2)
11 ‘CallByName分别取出CodeObject中的query1、query2对象,并找到姓名属性的值12 Debug.Print CallByName(CallByName(scobj.CodeObject, "query1", VbGet), "姓名", VbGet)
13 Debug.Print CallByName(CallByName(scobj.CodeObject, "query2", VbGet), "姓名", VbGet)
14
15 End Sub

CallByName是VB中的方法。

通过本地视图可以看到scobj对象和内部的codeobject

时间: 2024-08-01 22:45:44

VBA中使用JavaScript脚本语言解析JSON数据的相关文章

json 的解析-使用Android中的JSONObject和JSONArray解析json数据

1.代码 public class MainActivity extends Activity { TextView tv_json; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_json = (TextView) findViewById(R.id.tv_j

JavaScript中解析JSON数据

1.eval()方法 解析JSON数据的最常用方法是使用javascript的eval()方法,代码如下: function toJson(str){ var json = eval('(' + str + ')'); return json;} 2.new Function方法 该方法存在性能和安全方面的问题,不建议使用. function toJson(str){ var json = (new Function("return " + str))(); return json;}

JavaScript转换与解析JSON的方法

在JavaScript中将JSON的字符串解析成JSON数据格式,一般有两种方式: 一种为使用eval()函数. 使用Function对象来进行返回解析.缙云县外国专家局 使用eval函数来解析,jquery的each方法来遍历 用JQuery解析JSON数据的方法,作为JQuery异步请求的传输对象,JQuery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明. 这里首先给

.NET中常用的几种解析JSON方法

一.基本概念 json是什么? JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是一种轻量级的数据交换格式,是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. 序列化和反序列化是怎么回事? 序列化: 将数据结构或对象转换成二进制串的过程 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程 如何:对 JSON 数据进行序列化和反序列化? 1.定义 Person 的数据协定 通过

推断浏览器是否支持javascript脚本语言及处理方法

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getS

安卓中解析json数据

一.概述 JSON是JavaScript Object Notation的简称,起源于js(javascript)它是一种轻量级的数据交换格式,JSON不仅在js中广泛使用,同时还在其他领域得到广泛使用,如c,c++,java,Php,swift等等,成为了一种通用的理想数据交换格式,它有两种数据结构,分别是对象,数组,它形式上有花括号{}和中括号[]嵌套,{}中的是代表对象,[]中的为数组,即对象中有数组,数组中又有对象,而且以及键/值对出现. json语法: 数据在键值对中 数据有逗号分离

判断浏览器是否支持javascript脚本语言及处理方法

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getS

通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中  先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数

C语言解析JSON源码

2020-01-09 关键字:cJSON.linux JSON解析 JSON 是一种在互联网领域内很常用的轻量级数据交换协议. 它与 XML 的地位差不多,但就笔者而言,笔者更喜欢 JSON 的风格,因为它更符合我们的思维习惯,同样一份数据,JSON 格式的就是比 XML 要清晰明了一些. 最近笔者需要在 C语言 上解析 JSON 格式,在网上一顿找,找到一份很不错的开源代码.经过一阵研究与修改以后,终于变成了让笔者用的很顺手的 C语言 版 JSON 解析器. 现将这份经笔者小小修改过的代码记录