parsingVBA中的JSON奇怪的对象被返回

我正在写一个从Web服务读取JSONstring的Excel程序。 该string包含数据库视图的内容。 使用本网站的一些答案,我已经能够使用脚本控件和评价函数将string转换为对象

set sc = new ScriptControl sc.Eval(sJSONString) 

但是,当我研究在物体上产生的东西时,它是非常奇怪的。 数据已被安排在同一对象中的非连续(注意99个)索引和项目中。 任何人都可以摆脱任何事情发生什么事吗? (请不要build议使用非标准的VBA库,我不能)

在这里输入图像描述

经过一些testing,看起来就像监视窗口中显示的任何js数组一样:每个元素在数组索引下(0,1等)列出,而作为“Item1”,“Item2”等版。

“索引”版本是非连续的,因为“expression式”sorting是“asciibetical”,而不是数字。

下面是一个parsing和迭代数组的简单例子:

 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