Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays Json中的访问响应_Arrays_Json_Excel_Vba - Fatal编程技术网

Arrays Json中的访问响应

Arrays Json中的访问响应,arrays,json,excel,vba,Arrays,Json,Excel,Vba,我正在使用解析一个大的JSON响应,但我无法按预期访问响应的元素 例如,响应具有以下结构: {employees: [{employeeId: {id: 1234}, personNumber: "ABC123", shortName: "Bob",...},...],...} 我试过: Dim JsonPayload As Object Set JsonPayload = JsonConverter.ParseJson(req.ResponseText

我正在使用解析一个大的JSON响应,但我无法按预期访问响应的元素

例如,响应具有以下结构:

{employees: [{employeeId: {id: 1234}, personNumber: "ABC123", shortName: "Bob",...},...],...}
我试过:

Dim JsonPayload As Object
Set JsonPayload = JsonConverter.ParseJson(req.ResponseText)


MsgBox JsonPayload("dict_pDictionary")
MsgBox JsonPayload("employees")(1)("employeeId")
而且:

Set emp = JsonPayload("employees")
For Each e In emp
    Debug.Print "employee", e.shortName
    Debug.Print "shortName", e
    Debug.Print "shortName", e.dict_pDictionary
Next e
错误是
对象不支持此属性或方法。

我想知道如何循环响应。有些是variant/object/dictionary,其他部分似乎是variant/object/collection

VBA JSON将对象(
{}
)转换为字典,将数组(
[]
)转换为集合

在您的代码中,
e
是字典对象,而不是具有命名属性的对象,因此:

Dim jso作为对象、EMP、e
设置jso=JsonConverter.ParseJson(_
“{”“雇员”“:[{”“雇员id”“:{”“id”“:1234}”“人号”“:”“ABC123”“简称”“:”“鲍勃”“}]}”)
设置emps=jso(“员工”)
对于EMP中的每个e
Debug.Print e(“employeeId”)(“id”)>>1234
Debug.Print e(“shortName”)'>>Bob
下一个e