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.
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. |
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