我正在编写一个excel程序,它从Web服务中读取JSON字符串。该字符串包含数据库视图的内容。使用本网站的一些答案,我已经能够使用脚本控件和评估功能将字符串转换为对象
set sc = new ScriptControl
sc.Eval(sJSONString)
然而,当我检查物体中产生的东西时,它的布置非常奇怪。数据已被安排到同一对象中的非连续(注意99)索引和项目中。任何人都可以对正在发生的事情有所了解吗? (请不要建议使用非标准的VBA库,我不能
)
答案 0 :(得分:1)
经过一些测试后,似乎任何js数组将在Watch窗口中显示:每个元素都列在数组中的索引(0,1等)下,并且作为&# 34; Item1"," Item2"等版本。
"索引"版本是非连续的,因为"表达式"订购是" asciibetical",而不是数字。
这是解析和迭代数组的一个粗略示例:
Sub Tester()
Dim sc, o, json, n, i
Set sc = New ScriptControl
sc.Language = "Jscript"
json = "{data:[{'prop1':'val1','prop2':'val2'}," & _
" {'prop1':'val3','prop2':'val4'}," & _
" {'prop1':'val5','prop2':'val6'}]}"
sc.ExecuteStatement "var o = eval((" & json & "));"
sc.AddCode "function getCount(){return o.data.length;}"
sc.AddCode "function getItem(i){return o.data[i-1]};"
n = sc.Eval("getCount()") '--> 3
For i = 1 To n
Set o = sc.Eval("getItem(" & i & ")")
Debug.Print o.prop1, o.prop2
Next i
End Sub