在Excel VBA中parsingJSON对象数组

我知道一个类似的问题已被问及几次之前的答案: 在Excel中分析JSON VBA , Excel VBA:parsingJSON对象循环

但是,上面的解决scheme不起作用,如果我试图访问返回的对象中的数组。 我以下面的格式从Google Translate API接收JSON对象:

"{ "sentences":[ { "trans":"Responsibility\n", "orig":"??", "translit":"", "src_translit":"Zérèn" }, { "trans":"Department", "orig":"??", "translit":"", "src_translit":"Bùmén" } ], "src":"zh-CN", "server_time":86 

}”

我希望能够访问这两个翻译的句子作为句子(0)和句子(1)。 我可以使用前面post的GetProperty()方法来检索句子对象,但是我不能访问它的成员,因为它是JScriptTypeInfotypes的对象,而不是数组。

我试图在JScript中使用类似于此处所述的方法将句子对象转换为数组:使用javaScript和VBA如何传递数组 。 我只能得到它返回数组的第一个值,出于某种原因。

什么是最好的方法来做到这一点?

您可以使用ScriptControl对象来创build一个可以运行JavaScript的环境。 如果您习惯在网页中使用JSON,那么这可以是一个简单的方法。

例:

 Sub Tester() Dim json As String Dim sc As Object Dim o Set sc = CreateObject("scriptcontrol") sc.Language = "JScript" json = {get your json here} sc.Eval "var obj=(" & json & ")" 'evaluate the json response 'add some accessor functions sc.AddCode "function getSentenceCount(){return obj.sentences.length;}" sc.AddCode "function getSentence(i){return obj.sentences[i];}" Debug.Print sc.Run("getSentenceCount") Set o = sc.Run("getSentence", 0) Debug.Print o.trans, o.orig End Sub 

如何使用脚本控件调用函数: http : //support.microsoft.com/kb/184740

使用ScriptControl: https ://msdn.microsoft.com/en-us/library/aa227633( v= vs.60).aspx