Parse (Método)

Descripción general

Tipo:

Método

Disponible desde:

V1.4.15.0

Descripción funcional

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.

Interfaz

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.

NOTA: Por motivos de rendimiento, la validez de los parámetros de entrada de los bloques de funciones solo se verificará en el primer ciclo tras activar la ejecución del método. No modifique estos valores mientras esté en curso el análisis. Al ejecutar este método, se restablecerá el error detectado anteriormente e indicado por las propiedades correspondientes, así como la información relacionada con la operación anterior de análisis. El bloque de funciones ejecutará una verificación de sintaxis básica de los datos que se van a analizar. Asegúrese de que el formato de los datos siga la especificación JSON.

Ejemplo

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