30
Funciones JSON
Funciones de fórmula que nos permite procesar objetos JSON en base al estándar RFC-4627.
No es posible establecer un orden en un objeto JSON. Es un mapa, y como tal lo ordena alfabéticamente por sus claves.
Debemos tener en cuenta que en JSON el formato numérico soportado es double, es decir 15-16 dígitos significativos (8 bytes), inferior al de Velneo, que tiene un soporte de un rango mayor y mayor precisión.

Añade un valor de un tipo a un array JSON.

jsonAddToArray(json, valor, [tipo])

json
Expresión fórmula con la cadena que contiene el array JSON al que se le quiere añadir el valor. Puede ser un valor constante, un campo, una variable, una variable local, etc.
valor
Expresión fórmula con el valor a añadir al array JSON.
tipo
En este parámetro especificaremos el tipo de dato a añadir. Debemos especificarlo mediante una cadena, que puede contener los siguientes valores:
  • "string" si el dato a añadir es alfanumérico.
  • "number" si el dato a añadir es numérico.
  • "bool" si el dato a añadir es booleano.
  • "null", si el dato añadir es un valor nulo.
  • "array" si el dato a añadir es un array.
  • "object" si el dato a añadir es un objeto.

Supongamos que queremos generar un array JSON con el campo NAME de todos los registros de una tabla. Para ello podríamos programar un proceso en el que se usará una variable local llamada SZ_JSON como objeto para componer dicho array JSON:
Set ( SZ_JSON, "" )
Cargar lista ( [email protected], ID, , , , )
Recorrer lista solo lectura
Set ( SZ_JSON, jsonAddToArray(SZ_JSON, #NAME, "string") )
Ejemplo de contenido de la variable local SZ_ARRAY al terminar el proceso:
["Carlos Fernández","María Montes","Rafael Muñoz","Fernando Fernández","Lisa Sande","Mark Short","Mery Left","Andrée Vrai","Carlos Fuentes","David Fernández"]

Añade/modifica una clave/valor de un tipo a un objeto JSON. Cuando no encuentra la clave la añade con el valor que se le pasa, y si la encuentra, reemplaza su valor por el actual.

jsonAddToObject(json, clave, valor, [tipo])

json
Expresión fórmula con la cadena que contiene el array JSON al que se le quiere añadir la clave o el valor. Puede ser un valor constante, un campo, una variable, una variable local, etc.
clave
Expresión fórmula que contendrá una cadena con el valor que tendrá la clave/valor del objeto JSON.
valor
Expresión fórmula con el valor a añadir al array JSON.
tipo
En este parámetro especificaremos el tipo de dato a añadir. Debemos especificarlo mediante una cadena, que puede contener los siguientes valores:
  • "string" si el dato a añadir es alfanumérico.
  • "number" si el dato a añadir es numérico.
  • "bool" si el dato a añadir es booleano.
  • "null", si el dato añadir es un valor nulo.
  • "array" si el dato a añadir es un array.
  • "object" si el dato a añadir es un objeto.

Vamos a programar un proceso en el que, en primer lugar compondremos un array JSON con el campo NAME de todos los registros de una tabla y luego lo añadiremos como objeto a una variable local alfabética llamada SZ_ARRAY:
Rem ( Inicializamos variables )
Set ( SZ_JSON, "" )
Set ( SZ_NAME, "" )
Libre
Rem ( Cargamos los regisrtos de la tabla )
Cargar lista ( [email protected] pruebas, ID, , , , )
Rem ( Recorremos la tabla y compondremos un array JSON con el campo NAME de todos los registros )
Recorrer lista solo lectura
Set ( SZ_NAME, jsonAddToArray(SZ_NAME, #NAME, "string") )
Rem ( Añadimos el array generado en el paso anterior como objeto al array JSON (variable local SZ_JSON) )
Set ( SZ_JSON, jsonAddToObject(SZ_JSON, "Nombre", SZ_NAME, "array") )
Ejemplo de contenido de la variable SZ_JSON:
{"Nombre":["Carlos Fernández","María Montes","Rafael Muñoz","Fernando Fernández","Lisa Sande","Mark Short","Mery Left","Andrée Vrai","Carlos Fuentes","David Fernández"]}

Elimina el ítem correspondiente a la posición del JSON cuando es un array.

jsonDeleteArrayItem(json, posicion)

json
Expresión fórmula con la cadena que contiene el array JSON del que se quiere eliminar el ítem. Puede ser un valor constante, un campo, una variable, una variable local, etc.
Posición
Expresión fórmula con la posición del ítem a eliminar. La primera posición del array es la 0.

En un proceso inicializamos una variable local alfabética llamada SZ_ID con un array JSON y luego le quitaremos la posición 3:
Set ( SZ_ID, "[1,2,3,4,5,6,7,8,9,10]"
Set ( SZ_ID, jsonDeleteArrayItem(SZ_ID, 3) )
El resultado sería: [1,2,3,5,6,7,8,9,10]

Elimina la clave y su valor correspondiente del json cuando es un objeto.

jsonDeleteKey(json, clave)

json
Expresión fórmula con la cadena que contiene el array JSON en el que se quiere eliminar la clave y su valor. Puede ser un valor constante, un campo, una variable, una variable local, etc.
clave
Expresión fórmula que contendrá una cadena que contenga el nombre de la clave a borrar del objeto JSON.

En un proceso tenemos la varible local SZ_JSON con el contenido siguiente:
{
"ID":[1,2,3,4,5],
"Nombre":["Carlos Fernández","María Montes","Rafael Muñoz","Fernando Fernández","Lisa Sande"]
}
Y deseamos quitar la clave ID:
Set ( SZ_JSON, jsonDeleteKey(SZ_JSON, "ID")
El resultado sería:
{
"Nombre":["Carlos Fernández","María Montes","Rafael Muñoz","Fernando Fernández","Lisa Sande"]
}

Devuelve la posición del primer ítem con el valor correspondiente del json cuando es un array buscando desde la posición especificada.

jsonFindArrayItem(json, valor, [posicion])

json
Expresión fórmula con la cadena que contiene el array JSON en el que se quiere encontrar valor. Puede ser un valor constante, un campo, una variable, una variable local, etc.
valor
Expresión fórmula con el valor a buscar.
posición
Posición desde la que se quiere buscar.
Es opcional y su valor por defecto es 0.

SZ_ID = [1,2,3,4,5]
jsonFindArrayItem(SZ_ID, 2, ) = 1

Formatea un JSON.

jsonFormat(json, formato)

json
Expresión fórmula con la cadena que contiene el array JSON en el que se quiere encontrar el valor. Puede ser un valor constante, un campo, una variable, una variable local, etc.
Formato
En este parámetro indicaremos qué formato queremos aplicar al JSON. Los valores posibles son:
0 - Indentado.
1- Compacto.

La variable SZ_JSON contiene lo siguiente:
{"ID":[1,2,3,4,5],"Nombre":["Carlos Fernández","María Montes","Rafael Muñoz","Fernando Fernández","Lisa Sande"]}
jsonFormat(SZ_JSON, 0) =
{
"ID": [
1,
2,
3,
4,
5
],
"Nombre": [
"Carlos Fernández",
"María Montes",
"Rafael Muñoz",
"Fernando Fernández",
"Lisa Sande"
]
}

Devuelve un elemento de un array JSON

jsonGetArrayItem(json, posicion)

json
Expresión fórmula con la cadena que contiene el array JSON en el que se quiere obtene el elemento. Puede ser un valor constante, un campo, una variable, una variable local, etc.
posición
Posición del elemento a obtener. La primera posición es 0.

SZ_ID = [1,2,3,4,5]
jsonGetArrayItem(SZ_ID, 1, ) = 2

Devuelve la longitud de un array JSON.

jsonGetArrayLength(json)

json
Expresión fórmula con la cadena que contiene el array JSON cuya longitud se quiere obtener. Puede ser un valor constante, un campo, una variable, una variable local, etc.

SZ_ID = [1,2,3,4,5]
jsonGetArrayLength(SZ_ID) = 5

Devuelve las claves de un json

jsonGetKeys(json)

json
Expresión fórmula con la cadena que contiene el array JSON cuyas claves se quieren obtener. Puede ser un valor constante, un campo, una variable, una variable local, etc.

SZ_JSON =
"ID": [
1,
2,
3,
4,
5
],
"Nombre": [
"Carlos Fernández",
"María Montes",
"Rafael Muñoz",
"Fernando Fernández",
"Lisa Sande"
]
}
jsonGetKeys( SZ_JSON ) = ID,Nombre

Devuelve un valor de un JSON correspondiente a la clave.

jsonGetValue(json, clave)

json
Expresión fórmula con la cadena que contiene el objeto JSON del que se quiere obtener los valores de una clave. Puede ser un valor constante, un campo, una variable, una variable local, etc.
Clave
Expresión fórmula con el nombre de la clave cuyo valor se desea obtener.

SZ_JSON =
{
"ID": [
1,
2,
3,
4,
5
],
"Nombre": [
"Carlos Fernández",
"María Montes",
"Rafael Muñoz",
"Fernando Fernández",
"Lisa Sande"
]
}
jsonGetValue(SZ_JSON, "Nombre") = ["Carlos Fernández","María Montes","Rafael Muñoz","Fernando Fernández","Lisa Sande"]

Devuelve verdadero (1) si un JSON es un array o falso (0), si no lo es.

jsonIsArray(json)

json
Expresión fórmula con la cadena que contiene el array JSON a validar. Puede ser un valor constante, un campo, una variable, una variable local, etc.

SZ_ID = [1,2,3,4,5]
jsonIsArray(SZ_ID) = 1
SZ_JSON =
"ID": [
1,
2,
3,
4,
5
],
"Nombre": [
"Carlos Fernández",
"María Montes",
"Rafael Muñoz",
"Fernando Fernández",
"Lisa Sande"
]
}
jsonIsArray(SZ_JSON) = 0

Devuelve verdadero (1) si un JSON es un objeto o falso (0) si no lo es.

jsonIsObject(json)

json
Expresión fórmula con la cadena que contiene el array JSON a validar. Puede ser un valor constante, un campo, una variable, una variable local, etc.

SZ_JSON =
"ID": [
1,
2,
3,
4,
5
],
"Nombre": [
"Carlos Fernández",
"María Montes",
"Rafael Muñoz",
"Fernando Fernández",
"Lisa Sande"
]
}
jsonIsObject(SZ_JSON) = 1
SZ_ID = [1,2,3,4,5]
jsonIsObject(SZ_ID) = 0

Devuelve verdadero (1) si un JSON es válido o falso (0) si no lo es

jsonIsValid(json)

json
Expresión fórmula con la cadena que contiene el array JSON a validar. Puede ser un valor constante, un campo, una variable, una variable local, etc.

SZ_JSON =
"ID": [
1,
2,
3,
4,
5
],
"Nombre": [
"Carlos Fernández",
"María Montes",
"Rafael Muñoz",
"Fernando Fernández",
"Lisa Sande"
]
}
jsonIsValid(SZ_JSON) = 1
SZ_ID = [1,2,3,4,5]
jsonIsValid(SZ_ID) = 1

jsonKeyExists(json, clave)

json
Expresión fórmula con la cadena que contiene el array JSON en el que queremos comprobar si existe la clave. Puede ser un valor constante, un campo, una variable, una variable local, etc.
Clave
Expresión fórmula con el nombre de la clave a buscar.

SZ_JSON =
"ID": [
1,
2,
3,
4,
5
],
"Nombre": [
"Carlos Fernández",
"María Montes",
"Rafael Muñoz",
"Fernando Fernández",
"Lisa Sande"
]
}
jsonKeyExists(SZ_JSON, "Nombre") = 1
Copiar enlace
Esquema
jsonAddToArray
jsonAddToObject
jsonDeleteArrayItem
jsonDeleteKey
jsonFindArrayItem
jsonFormat
jsonGetArrayItem
jsonGetArrayLength
jsonGetKeys
jsonGetValue
jsonIsArray
jsonISObject
jsonIsValid
jsonKeyExists