Este método se utiliza para analizar datos de formato JSON de forma síncrona. El análisis podría tardar varios milisegundos, en función del tamaño de los datos. Tenga esto en cuenta cuando configure su tarea. Otra alternativa consiste en utilizar el método ParseAsync(), que divide el análisis en bloques individuales para cada llamada a fin de reducir el límite del tiempo de ejecución de una llamada de método individual.
Una vez analizados correctamente los datos, se selecciona el elemento raíz.
El valor de retorno de tipo BOOL indicará TRUE si se han analizado correctamente los datos. Utilice las propiedades Result o ResultMsg para obtener el resultado del método.
Entrada |
Tipo de datos |
Descripción |
---|---|---|
i_anyDataToParse |
ANY |
Asigna una variable que contiene los datos de formato JSON. Se admiten variables de tipo STRING o ARRAY OF BYTE. |
i_sJPath |
STRING [255] |
Permite analizar parcialmente datos de formato JSON: Solo se analizan los elementos del nivel de subjerarquía como el elemento seleccionado por la expresión JPath. Para analizar todos los datos, asigne una cadena nula. Consulte también la lista de expresiones JPath compatibles. |
En el siguiente ejemplo, se indica cómo implementar un proceso de análisis síncrono y recuperar un valor de la cadena de formato JSON analizada:
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