在返回的VBA奇怪对象中解析JSON

时间:2014-07-23 17:43:13

标签: json excel vba

我正在编写一个excel程序,它从Web服务中读取JSON字符串。该字符串包含数据库视图的内容。使用本网站的一些答案,我已经能够使用脚本控件和评估功能将字符串转换为对象

set sc = new ScriptControl
sc.Eval(sJSONString)

然而,当我检查物体中产生的东西时,它的布置非常奇怪。数据已被安排到同一对象中的非连续(注意99)索引和项目中。任何人都可以对正在发生的事情有所了解吗? (请不要建议使用非标准的VBA库,我不能

enter image description here

1 个答案:

答案 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