|
本帖最后由 RockedPanda 于 2014-8-6 17:41 编辑
liucqa 发表于 2012-11-4 22:11
通过在VBA中使用上面的JS语句,我们可以得到简单的JSON文本数据。
然而,在实际应用中,上述语句会出现许多 ...
"1x2"这种命名在JS中是一个合法属性,但这种属性不能通过"."运算符访问,可以通过"[]"运算符访问.VBA刚开始学,不清楚有没有简单的方法,目前已测试的方法如下:
ss = "function property(obj, key) { return obj[key]; }" '构造一个辅助的属性访问函数
x.AddCode ss
'利用访问函数获取1x2这种特殊属性,其他可能的形式还包括: 纯数字123,特殊符号@#_等等.
MsgBox x.Run("property", y, "1x2")
完整的例子:
Sub Sample()
Dim aa, x, y As Object, s, ss
aa = "{ ""people"": [{ ""firstName"": ""Brett"",""1x2"":""this is 1x2"", ""11"":""this is number 11"", ""@11"":""this is char @"", ""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[0]'); }"
x.AddCode s
ss = "function property(obj, key) { return obj[key]; }" '构造一个辅助的属性访问函数
x.AddCode ss
Set y = x.Run("j", aa)
MsgBox y.firstName
MsgBox CallByName(y, "email", VbGet)
'利用访问函数获取1x2这种特殊属性,其他可能的形式还包括: 纯数字123,特殊符号@#_等等.
MsgBox x.Run("property", y, "1x2")
MsgBox x.Run("property", y, "11")
MsgBox x.Run("property", y, "@11")
End Sub
|
|