我想使用Microsoft ScriptControl在VBA中解析JSON字符串,然后将生成的Object转换为Dictionary和Collection对象。我已经知道如何使用ScriptControl进行解析,但无法弄清楚如何将结果映射到Dictionary和Collection类。我猜如果我能弄清楚如何遍历一个Object的属性,这将变得清晰......
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。
编辑:我在this帖子中找到了获取对象属性的讨论。
答案 0 :(得分:0)
使用解析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
答案 1 :(得分:-1)
环 This将帮助您循环 - 在javascript中添加myitem(n)方法 从那里你可以通过VB代码映射。