【发布时间】:2020-08-23 16:54:08
【问题描述】:
我不知道如何正确循环来自WinHttp.WinHttpRequest 的 JSON(Object) 响应
我得到的。
以下是正在使用的参考。我更喜欢保持原样并使用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 中的情况有些不同。
谢谢。
【问题讨论】:
-
使用 json 查看器查看结构。看起来你想在外部 For Each over response("Record") 这是字典的集合。
标签: json vba winhttp winhttprequest vba6