3

我想使用 Microsoft ScriptControl 解析 VBA 中的 JSON 字符串,然后将生成的 Object 转换为 Dictionary 和 Collection 对象。我已经知道如何使用 ScriptControl 进行解析,但无法弄清楚如何将结果映射到 Dictionary 和 Collection 类中。我猜如果我能弄清楚如何循环遍历对象的属性,这将变得清晰......

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。

编辑:我在这篇文章中找到了关于获取对象属性的讨论。

4

2 回答 2

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

于 2015-03-02T15:27:20.643 回答
-1

loop 将帮助您循环 - 在 javascript 中添加一个 myitem(n) 方法,您可以从那里映射到 VB 代码。

于 2013-10-14T12:27:35.947 回答