JSON String - wie auswerten?

DerPaul

Level-2
Beiträge
45
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich bekomme per MQTT einen JSON String geschickt, z.B. so:
Code:
{
"mqtt":{
"test_1": 1,
"wert": 2}
}

Ich habe keine Bibliothek gefunden, mit der ich einen JSON String vernünftig parsen kann.

Kennt jemand eine, mit der ich z.B. sagen kann: gib mir den Wert von "test_1"?

Oder wie kann ich das möglichst sicher selber bauen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß nicht ob es entsprechende Parser in CoDeSys gibt. Für die S7 haben wir mal Teile von jsmn von C auf SCL (ST auf S7) portiert.
Die portierte Funktion liefert einen Strukturbaum zurück der dann nach einzelnen Elementen durchsucht werden kann.
 
Früher gab es im Codesys Store ein Library für JSON strings ( https://store.codesys.com/json-utilities-bundle.html ).

Heutzutage wurde dies integriert im package "IIoT libraries SL" , at https://store.codesys.com/iiot-libraries-sl.html . Ich habe das selbst nicht benutzt, also versuch erstmal ein Demo version. Ohne Lizenz läuft es 30 Minuten im Demo-Modus.

Codesys Store schrieb:
JSON Utilities SL

Die Bibliothek ‚JSON Utilities SL‘ bietet folgende Funktionalitäten:
  • Lesen von JSON Dateien (UTF-8 und UTF-16)
  • Lesen von JSON Bytearrays
  • Schreiben von JSON Dateien (UTF-8 und UTF-16)
  • Schreiben von JSON Bytearrays
  • Suche nach Schlüssel, Werten, Kind-Elementen und Eltern-Elementen

Die Daten werden in einem Array von Strukturen gespeichert. Der Datenzugriff und die Suche nach Elementen erfolgt über Methoden des Funktionsbausteins JSONData. Die Funktionsbausteine JSONByteArrayReader und JSONFileReader lesen Daten im JSON-Format ein und speichern die Werte im Funktionsbaustein JSONData. Das Schreiben von Dateien und Bytearrays erfolgt über die Funktionsbausteine JSONFileWriter und JSONByteArrayWriter.

In Verbindung mit der Bibliothek ‚Web Client SL‘ (im Package enthalten) kann auf einfache Weise ein einfacher REST-Client implementiert werden.
 
Zurück
Oben