Diese Methode wird zum synchronen Analysieren von JSON-formatierten Daten verwendet. Je nach Datengröße kann die Analyse mehrere Millisekunden in Anspruch nehmen. Berücksichtigen Sie dies bei der Konfiguration Ihrer Task. Alternativ können Sie die Methode ParseAsync() verwenden, die die Syntaxanalyse in Einzelblöcke pro Aufruf unterteilt, um die Grenze der Ausführungszeit eines einzelnen Methodenaufrufs zu reduzieren.
Nach der erfolgreichen Syntaxanalyse der Daten wird das Stammelement ausgewählt.
Der Rückgabewert des Typs BOOL entspricht TRUE, wenn die Daten erfolgreich analysiert wurden. Verwenden Sie die Eigenschaften Result oder ResultMsg, um das Ergebnis der Methode abzurufen.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_anyDataToParse |
ANY |
Weisen Sie eine Variable mit Daten im Format JSON zu. Variablen des Typs STRING oder ARRAY OF BYTE werden unterstützt. |
i_sJPath |
STRING [255] |
Ermöglicht die teilweise Analyse von JSON-formatierten Daten: Nur die Elemente auf der Unterhierarchieebene, wie das vom JPath-Ausdruck ausgewählte Element, werden analysiert. Um die vollständigen Daten zu analysieren, weisen Sie eine Null-Zeichenfolge zu. Siehe auch die Liste unterstützter JPath-Ausdrücke. |
Das folgende Beispiel zeigt die Implementierung einer synchronen Syntaxanalyse und das Abrufen eines Werts auf der analysierten Zeichenfolge im Format JSON:
PROGRAM SR_Main_Sync
VAR
xGetValueOutOfJsonString : BOOL;
sCity : STRING;
sJsonString : STRING[500] := '{"Library": "FileFormatUtility","Namespace": "FFU","Forward Compatible": true,"Supported Formats": ["JSON", "XML", "CSV"],"Company": "Schneider Electric","Address":{"Street": "Schneiderplatz","House Number": 1,"Postal Code": "97828","City": "Marktheidenfeld","Country": "Germany"}}';
fbJsonUtilities : FFU.FB_JsonUtilities;
etResult : FFU.ET_Result;
sResultMsg : STRING;
END_VAR
IF xGetValueOutOfJsonString THEN
xGetValueOutOfJsonString := FALSE;
//Parse JSON formatted string
IF NOT (fbJsonUtilities.Parse(i_anyDataToParse := sJsonString, i_sJPath := '')) THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMs
RETURN;
END_IF
//Select element containing requested value
IF NOT(fbJsonUtilities.Select(i_sJPath := '.Address.City')) THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
//Get value of item
sCity := fbJsonUtilities.ValueOfSelected;
IF fbJsonUtilities.Error THEN
//Error handling for failed Parse process.
etResult := fbJsonUtilities.Result;
sResultMsg := fbJsonUtilities.ResultMsg
RETURN;
END_IF
END_IF