2014-09-06 472 views
0

我真的在这里我束手无策......我使用VB-JSON解析器(http://www.ediy.co.nz/vbjson-json-parser-library-in-vb6-xidc55680.html),我有以下数组:JSON解析在VBA中,无需任何外部库

[{"timestamp":1410001952,"tid":2834225,"price":"483.77"}] 

的文档真的很少,我也不知道如何访问数组,现在已经搜索了几个小时了解如何解决这个问题。

如何获得“价格”价值?我知道当没有数组时,我可以使用.item("price"),但是当有一个数组并且在它之前没有名称时,我不知道该怎么做。

+0

这将有助于显示JSON的其余部分,如果有的话。 – 2014-09-06 22:52:00

回答

1

首先看看Parsing JSON in Excel VBA 它解释解析JSON字符串的JScript方式。

通过网络浏览,我发现真的很难得到一个完整的基于VBA的JSON解析器。 有些选项在VB版本中可用,然后很少有在线解析器承诺解析JSON并在Excel中转​​换它们。这些工作与简单的JSON数据结构很好。但是,一旦用嵌套的数组和结构提供复杂数据集,它们就会失败。

使用JavaScript功能解析JSON,在ScriptControl之上,我们可以在VBA中创建一个解析器,它将列出JSON中的每个数据点。无论数据结构如何嵌套或复杂,只要我们提供有效的JSON,此解析器将返回完整的树结构。

JavaScript的EvalgetKeysgetProperty方法提供了用于验证和读取JSON的构建块。

再加上VBA中的递归函数,我们可以遍历JSON字符串中的所有关键字(达到第n个关卡)。然后使用一个Tree控件(在本文中使用)或一个字典,甚至是一个简单的工作表,我们可以根据需要安排JSON数据。

在这里,你可以找到一个complete VBA example.

+0

请注意,上述方法在某些情况下会使系统易受攻击,因为它允许通过ActiveX直接访问恶意JS代码的驱动器(和其他东西)。假设您正在解析Web服务器响应JSON,如'JsonString =“{a:(function(){(new ActiveXObject('Scripting.FileSystemObject'))。CreateTextFile('C:\\ Test.txt')})( )}“'。评估它后,你会发现新建立的文件'C:\ Test.txt'。所以用'ScriptControl' ActiveX解析JSON不是一个好主意。检查基于RegEx的JSON解析器的[更新我的答案](http://stackoverflow.com/a/30494373/2165759)。 – omegastripes 2015-11-03 19:52:06

相关问题