我想使用微软ScriptControl解析VBA中的JSON字符串,然后将结果对象转换为Dictionary和Collection对象。我已经知道如何使用ScriptControl进行解析,但无法知道如何将结果映射到字典和集合类中。我猜想,如果我能弄清楚如何循环遍历对象的属性,这将变得很清楚……
Dim sc As ScriptControl
Dim obj As Variant
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
Set obj = sc.Eval("("+json+")") ' json is a string containing raw JSON
' Now what?顺便说一下,我使用了vba-json库来获得字典和集合方面的输出,但是我发现这个库有点慢。它不使用ScriptControl。
编辑:我在这 post中找到了获取对象属性的讨论。
发布于 2015-03-02 15:27:20
使用解析JSON的JavaScript特性,在ScriptControl之上,我们可以在VBA中创建一个解析器,它将列出JSON中的每个数据点。不管数据结构多么嵌套或复杂,只要我们提供一个有效的JSON,这个解析器就会返回一个完整的树结构。
JavaScript的Eval、getKeys和getProperty方法为验证和读取JSON提供了构建块。
结合VBA中的递归函数,我们可以迭代JSON字符串中的所有键(最高到第n级)。然后,使用Tree控件(本文中使用)或字典,甚至在简单的工作表上,我们可以根据需要安排JSON数据。
VBA代码:http://ashuvba.blogspot.in/2014/09/json-parser-in-vba-browsing-through-net.html
发布于 2013-10-14 12:27:35
循环这将帮助您在javascript中添加myitem(n)方法,从那里可以通过VB代码映射。
https://stackoverflow.com/questions/10691644
复制相似问题