# Funciones JSON

Funciones de [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) que nos permite procesar objetos [JSON](https://es.wikipedia.org/wiki/JSON) en base al estándar [RFC-4627](http://tools.ietf.org/html/rfc4627).

{% hint style="info" %}
No es posible establecer un orden en un objeto JSON. Es un mapa, y como tal lo ordena alfabéticamente por sus claves.
{% endhint %}

{% hint style="info" %}
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](https://doc.velneo.com/29/buenas-practicas-de-programacion/buenas-practicas-de-rendimiento/conoce-los-limites#limite-de-variables-alfabeticas-y-numericas), que tiene un soporte de un rango mayor y mayor precisión.&#x20;
{% endhint %}

### jsonAddToArray

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

#### Sintaxis

`jsonAddToArray(json, valor, [tipo])`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON al que se le quiere añadir el valor. Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

**valor**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) 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.

#### Ejemplo

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](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso) en el que se usará una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local) llamada SZ\_JSON como objeto para componer dicho array JSON:

```
Set ( SZ_JSON, "" )
Cargar lista ( CONTACTOS@miproyecto, 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"]`

### jsonAddToObject

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.

#### Sintaxis

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

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) 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](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/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](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) 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.

#### Ejemplo

Vamos a programar un [proceso](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/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](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/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 ( CONTACTOS@Json 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"]}`

### jsonDeleteArrayItem

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

#### **Sintaxis**

`jsonDeleteArrayItem(json, posicion)`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON del que se quiere eliminar el ítem. Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

**Posición**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la posición del ítem a eliminar.  La primera posición del array es la 0.

#### Ejemplo

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]`

### jsonDeleteKey

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

#### Sintaxis

`jsonDeleteKey(json, clave)`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON en el que se quiere eliminar la clave y su valo&#x72;**.** Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

**clave**

Expresión fórmula que contendrá una cadena que contenga el nombre de la clave a borrar del objeto JSON.

#### Ejemplo

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"]
}
```

### jsonFindArrayItem

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

#### Sintaxis

`jsonFindArrayItem(json, valor, [posicion])`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON en el que se quiere encontrar valo&#x72;**.** Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

**valor**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con el valor a buscar.

**posición**

Posición desde la que se quiere buscar.&#x20;

Es opcional y su valor por defecto es 0.

#### Ejemplo

SZ\_ID = \[1,2,3,4,5]

`jsonFindArrayItem(SZ_ID, 2, )` = 1

### jsonFormat

Formatea un JSON.

#### Sintaxis

`jsonFormat(json, formato)`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON en el que se quiere encontrar el valo&#x72;**.** Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

**Formato**

En este parámetro indicaremos qué formato queremos aplicar al JSON. Los valores posibles son:

0 - Indentado.

1- Compacto.

#### Ejemplo

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)` =&#x20;

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

### jsonGetArrayItem

Devuelve un elemento de un array JSON

#### Sintaxis

`jsonGetArrayItem(json, posicion)`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON en el que se quiere obtene el element&#x6F;**.** Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

**posición**

Posición del elemento a obtener. La primera posición es 0.

#### Ejemplo

SZ\_ID = \[1,2,3,4,5]

`jsonGetArrayItem(SZ_ID, 1, )` = 2

### jsonGetArrayLength

Devuelve la longitud de un array JSON.

#### Sintaxis

`jsonGetArrayLength(json)`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON  cuya longitud se quiere obtener. Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

#### Ejemplo

SZ\_ID = \[1,2,3,4,5]

`jsonGetArrayLength(SZ_ID)` = 5

### jsonGetKeys

Devuelve las claves de un json

#### Sintaxis

`jsonGetKeys(json)`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON  cuyas claves se quieren obtener. Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

#### Ejemplo

SZ\_JSON =&#x20;

```
    "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

### jsonGetValue

Devuelve un valor de un JSON correspondiente a la clave.

#### Sintaxis

`jsonGetValue(json, clave)`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) 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](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

**Clave**&#x20;

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con el nombre de la clave cuyo valor se desea obtener.

#### Ejemplo

SZ\_JSON =&#x20;

```
{
    "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"]

### jsonIsArray

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

#### Sintaxis

`jsonIsArray(json)`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON  a validar. Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

#### Ejemplos

SZ\_ID = \[1,2,3,4,5]

`jsonIsArray(SZ_ID)` = 1

SZ\_JSON =&#x20;

```
    "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

### jsonISObject

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

#### Sintaxis

`jsonIsObject(json)`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON  a validar. Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

#### Ejemplos

SZ\_JSON =&#x20;

```
    "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

### jsonIsValid

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

#### Sintaxis

jsonIsValid(json)

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON  a validar. Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

#### Ejemplos

SZ\_JSON =&#x20;

```
    "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

#### Sintaxis

`jsonKeyExists(json, clave)`

#### Parámetros

**json**

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con la cadena que contiene el array JSON  en el que queremos comprobar si existe la clave. Puede ser un valor constante, un [campo](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

**Clave**&#x20;

Expresión [fórmula](https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) con el nombre de la clave a buscar.

#### Ejemplo

SZ\_JSON =&#x20;

```
    "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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.velneo.com/29/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas/funciones-estandar/funciones-json.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
