Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Excel VBA中解析JSON对象数组_Javascript_Json_Excel_Vba_Jscript - Fatal编程技术网

Javascript 在Excel VBA中解析JSON对象数组

Javascript 在Excel VBA中解析JSON对象数组,javascript,json,excel,vba,jscript,Javascript,Json,Excel,Vba,Jscript,我知道类似的问题已经被问过并回答过几次: , 但是,如果我试图访问返回对象中的数组,则上述解决方案不起作用。我正在从Google Translate API接收以下格式的JSON对象: "{ "sentences":[ { "trans":"Responsibility\n", "orig":"??", "translit":"", "src_translit":"Zérèn" }, { "

我知道类似的问题已经被问过并回答过几次: ,

但是,如果我试图访问返回对象中的数组,则上述解决方案不起作用。我正在从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)。我可以使用前面文章中的GetProperty()方法检索句子对象,但无法访问其成员,因为它是JScript类型的对象,而不是数组

我尝试在JScript中使用类似于此处描述的方法将句子对象转换为数组:。出于某种原因,我只能让它返回数组的第一个值


最好的方法是什么?

您可以使用
ScriptControl
对象创建一个可以运行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
如何使用脚本控件调用函数:

使用ScriptControl:

也可以转到数组。项(0)请参阅此链接