/ / Análisis de datos JSON complejos utilizando VBA JSON - json, excel, vba, excel-vba

Análisis de datos JSON complejos utilizando VBA JSON - json, excel, vba, excel-vba

Estoy tratando de analizar datos de un archivo Json utilizando VBA Json, que es así:

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

Quiero reemplazar la llave a131331 con 1, b319810 con 2 y así sucesivamente en la primera columna de una hoja de cálculo, y coloque los otros datos correspondientes en las siguientes columnas. Así que mi hoja de excel se vería así:

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

Estoy usando este código en 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

Entiendo que puedo crear una columna con el rango de números comenzando desde 1 para la columna de ID. Pero, ¿cómo analizo esos objetos? a131331 y b319810?

Respuestas

1 para la respuesta № 1

Su objeto JSON es un diccionario de secuencias de comandos, por lo que puede iterar sobre las claves o sobre los valores.

Iterando sobre las teclas:

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

Salida:

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