/ / Analisando dados JSON complexos usando VBA JSON - json, excel, vba, excel-vba

Analisando dados JSON complexos usando VBA JSON - json, excel, vba, excel-vba

Estou tentando analisar dados de um arquivo Json usando o VBA Json, que é assim:

{
"a131331": {
"time" : "10:28 a.m.",
"title" : "first"
},
"b319810" : {
"time" : "11:14 a.m.",
"title" : "third"
},
...
}

Eu quero substituir a chave a131331 com 1, b319810 com 2 e assim por diante na primeira coluna de uma planilha e coloque os outros dados correspondentes nas próximas colunas. Portanto, minha planilha do Excel se pareceria com:

ID|Time |Title
1 |10.28|first
2 |11.14|third

Estou usando esse código no VBA:

Public Sub ExcelJson()
Dim FSO As New FileSystemObject
Dim JsonTS As TextStream
Set JsonTS = FSO.OpenTextFile("M:Ds Downloads Newtest.json", ForReading)
JsonText = JsonTS.ReadAll
JsonTS.Close
Set JSON = ParseJson(JsonText)

i = 2

For Each Item In JSON

Sheets(1).Cells(i, 1).Value = Item("time")
Sheets(1).Cells(i, 2).Value = Item("title")
i = i + 1

Next

MsgBox ("complete")

End Sub

Entendo que posso criar uma coluna com o intervalo de números que começa em 1 para a coluna ID. Mas como analiso esses objetos a131331 e b319810?

Respostas:

1 para resposta № 1

Seu objeto JSON é um Dicionário de Script, portanto, você pode iterar sobre as Chaves ou sobre os Valores.

Iterando sobre as chaves:

Dim Json As Object, k

"getting the JSON content from a worksheet for testing purposes...
Set Json = JsonConverter.ParseJson(Sheet1.Range("B1").Value)

For Each k In Json.Keys

Debug.Print k, Json(k)("time"), Json(k)("title")

Next k

Saída:

a131331       10:28 a.m.    first
b319810       11:14 a.m.    third