JavaScript基础教程之VBA中使用JavaScript脚本语言解析JSON数据
沉沙 2019-05-15 来源 : 阅读 3087 评论 0

摘要:本篇文章探讨了JavaScript基础教程之VBA中使用JavaScript脚本语言解析JSON数据,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

本篇文章探讨了JavaScript基础教程之VBA中使用JavaScript脚本语言解析JSON数据,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

JavaScript基础教程之VBA中使用JavaScript脚本语言解析JSON数据

<

对象表示法(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
     

      本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程