Parse (Metodo)

Panoramica

Tipo:

Metodo

Disponibile a partire da:

V1.4.15.0

Descrizione funzionale

Questo metodo viene utilizzato per l'analisi sincrona dei dati con formattazione JSON. In base alla dimensione dei dati, l'analisi può richiedere diversi millisecondi. Tenere presente questo aspetto quando si configura il task. In alternativa, è possibile utilizzare il metodo ParseAsync(), che divide l'analisi in singoli blocchi per chiamata per ridurre il limite del tempo di esecuzione di una singola chiamata di metodo.

Dopo aver analizzato correttamente i dati, viene selezionato l'elemento radice.

Il valore di restituzione di tipo BOOL indica TRUE se i dati sono stati analizzati correttamente. Utilizzare le proprietà Result o ResultMsg per ottenere il risultato del metodo.

Interfaccia

Ingresso

Tipo di dati

Descrizione

i_anyDataToParse

ANY

Assegnare una variabile contenente i dati con formattazione JSON.

Sono supportate le variabili di tipo STRING o ARRAY OF BYTE.

i_sJPath

STRING [255]

Consente l'analisi parziale dei dati con formattazione JSON: Vengono analizzati solo gli elementi del livello della gerarchia secondaria come l'elemento selezionato dall'espressione JPath.

Per analizzare i dati completi, assegnare una stringa nulla.

Consultare inoltre l'elenco delle espressioniJPath supportate.

NOTA: per motivi legati alle prestazioni, la validità dei parametri di ingresso dei blocchi funzione viene verificata solo nel primo ciclo dopo l'attivazione dell'esecuzione del metodo. Non modificare tali valori mentre l'analisi è in corso. Eseguendo questo metodo, vengono azzerati un errore rilevato in precedenza indicato dalle proprietà corrispondenti e le informazioni relative alla precedente operazione di analisi. Il blocco funzione esegue una verifica di base della sintassi dei dati da analizzare. Verificare che i dati siano formati in base alla specifica JSON.

Esempio

L'esempio seguente indica come implementare un processo di analisi sincrono e recuperare un valore dalla stringa con formattazione JSON analizzata:

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