Parse (Methode)

Übersicht

Typ:

Methode

Verfügbar ab:

V1.4.15.0

Funktionsbeschreibung

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.

Schnittstelle

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.

HINWEIS: Aus Leistungsgründen wird die Gültigkeit der Eingangsparameter der Funktionsbausteine nur im ersten Zyklus nach Auslösen der Methodenausführung geprüft. Ändern Sie diese Werte nicht, während die Analyse läuft. Durch die Ausführung dieser Methode werden ein zuvor erkannter und von den entsprechenden Eigenschaften angegebener Fehler sowie die Informationen zur vorhergehenden Analyseoperation zurückgesetzt. Der Funktionsbaustein führt eine grundlegende Basis-Syntaxprüfung der zu analysierenden Daten durch. Stellen Sie sicher, dass die Daten gemäß der JSON-Spezifikation formatiert wurden.

Beispiel

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