CopyJson
Diese Methode extrahiert ein JSON-Objekt aus einem Key und speichert dieses in einer Variablen vom Datentyp STRING. Dieser STRING kann eine beliebige Länge haben. Als Rückgabewert liefert die Methode die Länge des kopierten JSON-Objekts (inklusive Nullterminierung). Falls der Zielpuffer zu klein ist, wird dieser durch eine Nullterminierung geleert und als Länge 0 zurückgegeben.
Syntax
METHOD CopyJson : UDINT
VAR_INPUT
v : SJsonValue;
END_VAR
VAR_IN_OUT CONSTANT
pDoc : STRING;
nDoc : UDINT;
END_VAR
Rückgabewert
Name | Typ |
---|---|
CopyJson | UDINT |
Eingänge
Name | Typ |
---|---|
v | SJsonValue |
/ Ein-/Ausgänge
Name | Typ |
---|---|
pDoc | STRING |
nDoc | STRING |
Beispielaufruf:
Gegeben sei das folgende JSON-Dokument, das in den DOM-Speicher geladen wird:
sMessage := ' {"serialNumber":"123","meta":{"batteryVoltage":"1547mV","clickType":"SINGLE"}}';
Der Wert des JSON-Objekts „meta“ soll extrahiert und in einer Variablen vom Datentyp STRING gespeichert werden. Zunächst wird das JSON-Dokument iterativ nach dem Property „meta“ durchsucht, anschließend wird dessen Wert bzw. Unterobjekt durch Aufruf der Methode CopyJson() extrahiert.
jsonDoc := fbJson.ParseDocument(sMessage);
jsonIterator := fbJson.MemberBegin(jsonDoc);
jsonIteratorEnd := fbJson.MemberEnd(jsonDoc);
WHILE jsonIterator <> jsonIteratorEnd DO
sName := fbJson.GetMemberName(jsonIterator);
jsonValue := fbJson.GetMemberValue(jsonIterator);
IF sName = 'meta' THEN
fbJson.CopyJson(jsonValue, sString, SIZEOF(sString));
END_IF
jsonIterator := fbJson.NextMember(jsonIterator);
END_WHILE
Die Variable sString hat nach diesem Durchlauf folgenden Inhalt:
{"batteryVoltage":"1547mV","clickType":"SINGLE"}