JSONSetElement

Añade o modifica un elemento de datos de JSON especificado por un nombre de objeto, un índice de matriz o una ruta.

Formato 

JSONSetElement ( json ; keyOrIndexOrPath ; valor ; tipo )

Parámetros 

json: cualquier expresión o campo de texto que contenga un objeto o una matriz de JSON.

keyOrIndexOrPath: cualquier expresión o campo de texto que especifique un nombre de objeto (clave), un índice de matriz o una ruta de JSON. Consulte Uso de las funciones de JSON.

valor: cualquier expresión o campo de texto que contenga un número, texto o datos de JSON.

tipo: un valor numérico que especifica el tipo de datos que se va a establecer (consulte la información mostrada a continuación).

Tipo de datos devuelto 

texto

Se origina en 

16.0

Descripción 

Esta función devuelve json con un valor establecido en el parámetro keyOrIndexOrPath especificado. Si el parámetro json se deja en blanco (""), esta función añade un valor a un objeto de JSON (entre llaves { }), a menos que la primera parte del parámetro keyOrIndexOrPath empiece con el carácter "[". En ese caso, esta función añade un valor a una matriz de JSON (entre corchetes [ ]).

En el parámetro tipo, utilice uno de los siguientes valores: Si el valor se ha añadido a json, el parámetro tipo determina si se convertirá el valor a un tipo JSON específico o se insertará el valor sin cambiar el tipo.

parámetro tipo1

Tipo de entrada para el parámetro valor

Tipo de salida

JSONString (1)

Texto de FileMaker

Cadena JSON (" ")

JSONNumber (2)

Número de FileMaker

Número JSON

JSONObject (3)

Objeto JSON

Objeto JSON ( { } )

JSONArray (4)

Matriz JSON

Matriz JSON ( { } )

JSONBoolean (5)

Valor de FileMaker o valor booleano JSON

Valor booleano JSON

JSONNull (6)

Se omite el tipo.

JSON nulo

JSONRaw (0)

Elemento JSON

Elemento JSON (o una cadena JSON si el valor no es un elemento JSON válido)

  1. Puede especificar el tipo utilizando la constante especificada o el valor numérico que se muestra entre paréntesis como, por ejemplo, JSONString o 1, sin comillas.

Para JSONBoolean, si el valor es true (verdadero) o un número distinto a cero, se trata como verdadero; si el valor es false (falso) o cero, se trata como falso. De lo contrario, si el valor es "true" o "false", se determina igual que si el parámetro prueba se encontrase en la función If.

Para JSONRaw, el analizador JSON procesa el valor para determinar si utiliza una sintaxis JSON válida. Si el valor son datos de JSON válidos, el resultado analizado se utiliza en el valor devuelto de esta función sin convertir ningún elemento a los tipos de datos de JSON. Se omitirán todos los caracteres tras el primer elemento JSON en el valor; por ejemplo, si el valor es "4,2", solo se insertará "4", porque una coma es el separador entre los elementos en la sintaxis JSON. Si el valor no es un elemento JSON válido, este se convierte en una cadena JSON en el valor devuelto.

Puede establecer varios elementos proporcionando un conjunto adicional de parámetros keyOrIndexOrPath, valor, y tipo entre corchetes, "[ ]", para cada elemento. La siguientes sintaxis establece N elementos a la vez:

Copiar
JSONSetElement ( json ; 
   [ keyOrIndexOrPath1 ; valor1 ; tipo1 ] ; 
   [ keyOrIndexOrPath2 ; valor2 ; tipo2 ] ; 
   ...
   [ keyOrIndexOrPathN ; valorN ; tipoN ]
)

Ejemplo 1 

Añade una clave y su valor a la raíz de un objeto de JSON.

JSONSetElement ( "{ \"a\" : 11 }" ; "b" ; 22.23 ; JSONNumber ) devuelve {"a":11,"b":22.23}.

Ejemplo 2 

Crea una matriz, añade un elemento (un objeto JSON) utilizando la sintaxis "[+]"y, a continuación, utiliza la sintaxis "[:]" para hacer referencia a ese elemento como el último elemento de la matriz para añadir otro par de clave-valor al objeto.

Copiar
JSONSetElement( "[]"; 
    ["[+].a", 5, JSONNumber] ; 
    ["[:].b", 6, JSONNumber]
)

Devuelve [{"a":5,"b":6}].

Ejemplo 3 

Añade un objeto de JSON como elemento de otro objeto de JSON. Si la variable $$JSON se ha establecido en

Copiar
{
    "a" : {
        "id" : 12,
        "lnk" : 34
    }
}

then

Copiar
JSONFormatElements ( 
   JSONSetElement ( $$JSON ; "b" ; "{ \"id\" : 14, \"lnk\" : 73 } " ; 
      JSONObject 
   )
)

devuelve

Copiar
{
    "a"
    {
        "id" : 12,
        "lnk" : 34
    },
    "b"
    {
        "id" : 14,
        "lnk" : 73
    }
}

Ejemplo 4 

En los Datos de JSON de ejemplo almacenados en la variable $$JSON variable, cambia los valores de las claves "especialidad" y "existencias" del primer elemento "producto" de la matriz.

Copiar
JSONFormatElements ( 
   JSONSetElement ( $$JSON ; 
   [ "panadería.producto[0].especialidad" ; 0 ; JSONBoolean ] ; 
   [ "panadería.producto[0].existencias" ; 0 ; JSONNumber ] 
   )
)

devuelve los mismos datos en $$JSON, pero con el primer elemento de la matriz "producto" modificado como

Copiar
{
    "categoría" : "Panes",
    "id" : "FB1",
    "nombre" : "Rosquillas",
    "precio" : 1,99,
    "especialidad" : false,
    "existencias" : 0
}