ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 38245|回复: 63

[原创] 在VBA中使用JAVASCRIPT和VBSCRIPT(2)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-9-16 22:38 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:脚本语言应用
介绍 JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language(http://www.crockford.com/javascript), Standard ECMA-262 3rd Edition - December 1999(http://www.ecma-international.or ... cma-st/ECMA-262.pdf)的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

JSON建构于两种结构:

“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

JSON具有以下这些形式:

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

值(value)可以是双引号括起来的字符串(string)、数值(number)、 ture、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

除去一些编码细节,以下描述了完整的语言。

字符串(string)与C或者Java的字符串非常相似。除去未曾使用的八进制与十六进制格式,数值(number)也与C或者Java的数值非常相似。

空白可以加入到任何符号之间。





Sub figjson()

    aa = "{ ""myname"":""figfig"", ""myid"":""888"" }"
   
           Set x = CreateObject("ScriptControl")
        x.Language = "JScript"
      
    s = "function j(s) { return eval('(' + s + ')'); }"
      x.AddCode s
       Set y = x.CodeObject.j(aa)
      
    MsgBox y.myname
   MsgBox y.myid

End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-16 22:58 | 显示全部楼层

例子2

Sub figjson2()

   
    aa = "{myname:""alonely"", age:24, email:[""aa4@bb.com"",""aa@gmail.com""], family:{parents:[""父亲"",""母亲""],toString:function(){return ""家庭成员"";}}}"
           Set x = CreateObject("ScriptControl")
        x.Language = "JScript"
      
    s = "function j(s) { return eval('(' + s + ')'); }"
      x.AddCode s
       Set y = x.Run("j", aa)
      
    MsgBox y.myname
   MsgBox y.age
MsgBox y.email
MsgBox y.family
MsgBox y.family.parents

End Sub

TA的精华主题

TA的得分主题

发表于 2009-9-16 23:33 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-16 23:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

多重结构,树状显示,类似XML节点树,代码比XML简洁得多

Sub figjson3()
aa = "{""myname"":""Michael"",""myaddress"":{""city"":""Beijing"",""street"":"" Chaoyang Road "",""postcode"":100025}}"
   
            Set X = CreateObject("ScriptControl")
        X.Language = "JScript"
      
    s = "function j(s) { return eval('(' + s + ')'); }"
     X.AddCode s
       Set y = X.Run("j", aa)
      
    MsgBox y.myname
   MsgBox y.myaddress
MsgBox y.myaddress.city
MsgBox y.myaddress.postcode


End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-16 23:54 | 显示全部楼层

数组放入对象里

Sub figjson4()
aa = "{ ""people"": [{ ""firstName"": ""Brett"", ""lastName"":""McLaughlin"", ""email"": ""brett@newInstance.com"" },{ ""firstName"": ""Jason"", ""lastName"":""Hunter"", ""email"": ""jason@servlets.com"" }, { ""firstName"": ""Elliotte"", ""lastName"":""Harold"", ""email"": ""elharo@macfaq.com"" }]}"
Set X = CreateObject("ScriptControl")
        X.Language = "JScript"
      
    s = "function j(s) { return eval('(' + s + ').people[1]'); }"
     X.AddCode s
       Set y = X.Run("j", aa)
      MsgBox y.firstName
      MsgBox y.email



End Sub

点评

用js数组配合callbyname,基本上JSON的数据就都能取出来了。  发表于 2012-11-4 21:40

TA的精华主题

TA的得分主题

发表于 2009-9-17 00:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-9-17 01:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-9-17 09:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
高深莫测啊,拜读!

TA的精华主题

TA的得分主题

发表于 2009-9-17 09:15 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-9-17 09:43 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-28 21:39 , Processed in 0.042910 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表