Я не могу понять, как правильно перебрать ответ 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 все немного по-другому.
Спасибо.