【发布时间】:2021-02-12 21:29:34
【问题描述】:
我想从 JSON 数组中的 JSON 字符串获取数据,并使用 VBA 将数据显示到 Excel 工作表中。我正在使用库(VBA-JSON v2.3.1 JsonConverter)
我有以下 JSON 对象
{
"deviceMessages":[
{
"messageSource":"cc",
"externalSourceId":123,
"messageId":"blabla",
"internalDeviceId":66,
"externalDeviceId":"123456789",
"messageType":"UPLINK",
"rawMessage":"{\"hello\":\"58\",\"hello\":\"hello\",\"name\":\"Peter\",\"ID\":\"12346789\",\"rxInfo\":[{\"GT_ID\":\"123456\",\"name2\":\"20202022022020\",\"time\":\"2021-02-12T03:51:43.050959Z\",\"rss\":12,\"SN\":8,\"location\":{\"latitude\":\"XX.XX\",\"longitude\":\"X.XXXXX\",\"altitude\":\"XXX\"}}],\"Info\":{\"frequency\":XXXXXXX,\"dr\":X},\"adr\":XXX,\"nt\":XXXX,\"port\":X,\"data\":\"XXXXXXXXXXXXXX\"}",
"frame":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"createdAt":"2021-02-12T03:51:43.050Z",
"Json":"{\"temperature\":22.6,\"humidity\":37,\"light\":1,\"motion\":1,\"co2\":640,\"vdd\":3.647}",
"rs":12,
"framePort":16,
"nr":8.0,
"dataRate":5,
"counter":123456,
"GT":[
{
"id":1324,
"externalId":"123456789",
"SourceId":1234,
"companyId":66,
"sn":"xxxxxx",
"name":"hello",
"latitude":"xxxxxxxx",
"longitude":"xxxxxxx",
"range":null,
"status":"OK",
"Note":null,
"lastSeen":"2021-02-12T04:04:39Z"
}
]
}
]
}
我使用 VBA 代码获取数据。这是有效的。
我的代码如下所示:
Dim response2 As String
Dim json1 As Object
Dim ws2 As Worksheet
strUrl = "https://xxxxxxxxxxxx/devices/11/"
Set hReq = CreateObject("MSXML2.XMLHTTP")
With hReq
Set ws2 = Worksheets(3)
.Open "GET", strUrl, False
.SetRequestHeader "Authorization", "Bearer " & apitoken
.Send
response2 = hReq.responseText
Set json1 = JsonConverter.ParseJson(response2)
k = 2
For Each item In json1("deviceMessages")
ws2.Cells(k, 1) = item("createdAt")
ws2.Cells(k, 2) = item("dataFrame")
ws2.Cells(k, 3) = item("externalDeviceId")
ws2.Cells(k, 4) = item("externalSourceId")
ws2.Cells(k, 5) = item("internalDeviceId")
ws2.Cells(k, 6) = item("messageId")
ws2.Cells(k, 7) = item("messageType")
ws2.Cells(k, 8) = item("rawJson")
ws2.Cells(k, 9) = item("rawMessage")
k = k + 1
Next item
End With
如何从“Json”获取数据:”
{\"temperature\":22.6,\"humidity\":37,\"light\":1,\"motion\":1,\"co2\":640,\"vdd\":3.647} ?
目前,我在一个单元格中获取信息,格式如下。
{"temperature":22.6,"humidity":37,"light":1,"motion":1,"co2":640,"vdd":3.647}
我想像这样将数据分成行和列:
我只是不知道如何从这个 JSON 字符串中拆分信息。我正在寻找解决方案,但没有找到任何可以与我的代码一起使用的解决方案。
谢谢你帮助我!
【问题讨论】: