LabVIEWForum.de
Daten aus JSON einlesen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Daten aus JSON einlesen (/Thread-Daten-aus-JSON-einlesen)



Daten aus JSON einlesen - seni austria - 23.01.2023 10:03

Ich habe ein kleines Verständnis Problem mit diesen JSON Datensatz

{
"success": 1,
"data": [
["0x0000000000000000",0,0],
["0x0000000000000000",0,0],
...
]
}

1. Objekt = Numeric mit Namen "success"
2. Objekt = Array mit Namen "data"
--> Inhalt von "data" ein Array mit 'String, Num, Num' --> ist nicht möglich (verschiedene Datentypen in einem Array) !!

Was habe ich da falsch verstanden ?
Wie kann ich den Datensatz mit LabVIEW 'aus JASON zurückkonvertieren' zerlegen?

Danke für eure Hilfe.
Wolfgang


RE: Daten aus JSON einlesen - GerdW - 23.01.2023 10:18

Hallo seni,

laut https://jsonformatter.org/ ist dein JSON-Beispiel fehlerhaft.

Kannst du mal ein korrektes Beispiel beifügen?


RE: Daten aus JSON einlesen - seni austria - 23.01.2023 10:41

Auszug aus der Schnittstellenbeschreibung..

-------------------------------------------------------------------
7.2.8 get_diagnose_data
Returniert den kompletten Diagnosespeicher.

Befehl:
{ "cmd": "get_diagnose_data" }\n
Antwort:
{"success": 1,
"data": [
["0x0000000000000000",0,0],
["0x0000000000000000",0,0],
...
]
}\n

data: Array von Ereignissen. Ein Ereignis setzt sich aus folgenden drei Werten zusammen:
0: Zeitstempel (Betriebszähler in Millisekunden) als Hexadezimalzahl formatierter String.
1: Ereignis (Zahl)
2: Zusatzinformation abhängig vom Ereignis

----------------------------------------------------------------------

Die Daten kommen so von der Schnittstelle:

{"success":true,"data":[["0x0000000000000000",0,0],["0x0000000000000000",0,0],["0x0000000000000000",0,0],["0x000000000067db88",109,440],["0x000000000067dba8",208,0],["0x000000000067dba8",203,12],["0x000000000067dbac",203,5],["0x000000000067dd1c",301,0],["0x000000000067dd1c",203,1],["0x000000000067e07e",203,14],["0x000000000067e07e",203,3],["0x000000000067e196",201,0],["0x000000000067e198",203,4],["0x000000000067e198",204,1],["0x000000000067e19c",203,5],["0x0000000000682ca2",110,4114],["0x00000000006860e0",209,0],["0x00000000006860e0",202,0],["0x00000000006860e0",203,13],["0x000000000068622a",201,0],["0x0000000000686230",203,4],["0x0000000000686230",204,1],["0x0000000000686234",203,5],["0x0000000000686298",301,0],["0x0000000000686298",203,1],["0x00000000006865f8",203,14],["0x00000000006865f8",203,15]]}


Da ich die Kommunikation zum Controller nicht ändern kann, muss ich die Daten wohl mit den String-Funktionen von LabVIEW zerlegen...

Danke für Deine Hilfe


RE: Daten aus JSON einlesen - TpunktN - 23.01.2023 11:09

(23.01.2023 10:03 )seni austria schrieb:  --> Inhalt von "data" ein Array mit 'String, Num, Num' --> ist nicht möglich (verschiedene Datentypen in einem Array) !!

Ein Array of Cluster sollte das Problem lösen.

Edit: Hab das mal versucht, dabei kommt der Fehler "LabVIEW: (Hex 0xFFFA4720) The array has an invalid number of dimensions." Ich kenne mich nciht mit JSON aus, aber das ist doch ein 1D Array, oder?

MfG Timo


RE: Daten aus JSON einlesen - jg - 23.01.2023 13:40

Hallo Wolfgang,

der JSON-Parser von JKI (installierbar über den VI Package Manager) kommt mit dem folgenden Cluster bei deinen Daten klar:

[attachment=62469]

Eigentlich passt es zwar nicht, da die Daten laut JSON ein 2D-Array sind, aber wenn es klappt...

Gruß, Jens


RE: Daten aus JSON einlesen - seni austria - 23.01.2023 14:00

werde das noch versuchen..

Danke