VBA, как пройти через ответ JSON от WinHttp.WinHttpRequest
Я не могу понять, как правильно выполнить цикл через ответ JSON(Object) от WinHttp.WinHttpRequest
что я получаю.
Ниже приведены используемые ссылки. Я предпочитаю оставить все как есть и использоватьWinHttpRequest
Dim response As Object ' global
Function sendRequest(requestURL As String) ' send the http REST request url of API transaction
Dim request As New WinHttp.WinHttpRequest
request.Open "GET", requestURL, True
request.setRequestHeader "Authorization", "Bearer " + tokenResp
request.setRequestHeader "Accept", "application/json"
request.send
request.waitForResponse
Set response = ParseJson(request.ResponseText)
' Debug.Print vbNewLine & "Response : " & vbNewLine
' Debug.Print "Request ResponseText : " & request.ResponseText
End Function
Ниже показано, как выглядит ответ JSON, который я получаю. Есть еще записи.
{
"Record":[
{
"NameValue":[
{
"Name":"name1",
"Value":"value1"
},
{
"Name":"name2",
"Value":"value2"
}
]
},
{
"NameValue":[
{
"Name":"name1",
"Value":"value1"
},
{
"Name":"name2",
"Value":"value2"
}
]
}
]
}
В response
это объект. я могу сделатьDebug.Print response("Record")(1)("NameValue")(1)("Value")
получить первую запись
Debug.Print response("Record")(1)("NameValue")(1)("Value")
'значение1
но мне нужно пройти через него, чтобы получить все значения, а не только первое
Я не могу найти способ преобразовать JSON в массив с массивом length()
или size()
функция. Я искал и нашелUBound()
а также LBound()
но я думаю, что его можно использовать только с массивами, а не с объектами.
Буду признателен за любую помощь. В большинстве случаев я занимаюсь Java, и в VBA все немного по-другому.
Спасибо.
1 ответ
response("record")
это Collection
(а также все остальное в []
в вашем json). Каждый предмет в этой коллекции - этоDictionary
(также что-нибудь в {}
)
Dim itmRec, nameVal, itm
For each itmRec in response("Record")
set nameVal = itmRec("NameValue")
for each itm in nameVal
debug.print itm("Name"), itm("Value")
next itm
Next itmRec