# Funciones JSON

Funciones de [fórmula](https://doc.velneo.com/28/velneo-vdevelop/proyectos-objetos-y-editores/editores/asistente-de-formulas) que nos permite procesar objetos [JSON](https://es.wikipedia.org/wiki/JSON).

### 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/28/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/28/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/28/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/28/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

**valor**

Expresión [fórmula](https://doc.velneo.com/28/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/28/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso) en el que se usará una [variable local](https://doc.velneo.com/28/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/28/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/28/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/28/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/28/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/28/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/28/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/28/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/28/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/28/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo), una [variable](https://doc.velneo.com/28/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-datos/variable), una [variable local](https://doc.velneo.com/28/velneo-vdevelop/proyectos-objetos-y-editores/de-aplicacion-y-datos/variable-local), etc.

**Posición**

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

**valor**

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

**Clave**&#x20;

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

**Clave**&#x20;

Expresión [fórmula](https://doc.velneo.com/28/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
