Parse (méthode)

Présentation

Type :

Méthode

Disponible à partir de :

V1.4.15.0

Description fonctionnelle

Cette méthode est utilisée pour l'analyse synchrone de données au format JSON. Selon la taille des données, l'analyse peut prendre un certain nombre de millisecondes. Tenez compte de ce point lorsque vous configurez votre tâche. Une solution alternative consiste à utiliser la méthode ParseAsync() pour diviser l'analyse en blocs uniques par appel en vue de réduire la limite de temps d'exécution d'un seul appel de méthode.

Une fois que l'analyse des données a réussi, l'élément racine est sélectionné.

La valeur de retour de type BOOL indique TRUE si l'analyse des données a réussi. Utilisez les propriétés Result ou ResultMsg pour obtenir le résultat de la méthode.

Interface

Entrée

Type de données

Description

i_anyDataToParse

ANY

Affectez une variable contenant les données au format JSON.

Les variables de type STRING ou ARRAY OF BYTE sont prises en charge.

i_sJPath

STRING [255]

Autorise l'analyse partielle de données JSON : Seuls les éléments du niveau de sous-hiérarchie tel que l'élément sélectionné par l'expression JPath sont analysés.

Pour analyser la totalité des données, attribuez une chaîne nulle.

Reportez-vous également à la liste des expressionsJPath prises en charge.

NOTE : Pour des raisons de performances, la validité des paramètres d'entrée des blocs fonction est vérifiée uniquement lors du premier cycle suivant le déclenchement de la méthode. Ne modifiez pas ces valeurs tant que l'analyse est en cours. L'exécution de cette méthode réinitialise les erreurs détectées qui ont été signalées précédemment par les propriétés correspondantes ainsi que les informations liées à la précédente opération d'analyse. Le bloc fonction effectue une vérification de syntaxe élémentaire des données à analyser. Assurez-vous que la forme des données respecte la spécification JSON.

Exemple

L'exemple suivant montre comment mettre en oeuvre un processus d'analyse synchrone et récupérer une valeur de la chaîne JSON analysée :

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