# JsonSet Función de script y de gráfico

JsonSet() modifica una cadena especificada que contiene datos JSON (JavaScript Object Notation) válidos. Puede establecer o insertar un valor JSON con la nueva ubicación especificada por la ruta. Los datos deben ser datos JSON válidos pero pueden contener espacios extra o retornos.

Nota informativaPuede añadir cualquier número de pares de nombre-valor con JsonSet.

Sintaxis:

value JsonSet(json, path, value)

Tipo de datos que devuelve: dual

Argumentos

| Argumento | Descripción |
| --- | --- |
| json | Cadena que contiene datos JSON. |
| path | La ruta debe especificarse conforme a la [RFC 6901](https://datatracker.ietf.org/doc/html/rfc6901). Esto permitirá construir propiedades dentro de los datos JSON sin utilizar complejas funciones de subcadena o de índice. |
| value | El nuevo valor de la cadena en formato JSON. |

Ejemplo: expresiones de gráfico válidas y no válidas

| Ejemplo | Resultado |
| --- | --- |
| `JsonSet( '{}','/a','"b"' )` | Devuelve `{"a":"b"}` |
| `JsonSet( '[]','/0','"x"' )` | Devuelve `["x"]` |
| `JsonSet( '"abc"','','123' )` | Devuelve `123` |
| `JsonSet( '"abc"','/x','123' )` | Devuelve `null`. La ruta no apunta a una parte válida de los datos JSON. |
| `JsonSet( '{"a":{"b":"c"}}','a/b','"x"' )` | Devuelve `null`. La ruta no es válida. |
| `JsonSet( '{"a":"b"}','/a','abc' )` | Devuelve `null`. El valor no es un JSON válido. Una cadena debe ir entre comillas. |

## Ejemplo: fundamentos de JsonSet

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonSet.htm)

#### Expresión de gráfico

Vista general

Los datos JSON se reciben como una cadena de texto en una sola línea. Desea actualizar en consecuencia el precio del artículo y el precio total del pedido.

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* Un campo de la tabla de datos llamado `OrderDetails`.

Script de carga

```
Example:
Load  * 
INLINE [OrderDetails
'{ "order_id": "12345", "customer": { "name": "John Doe", "email": "john.doe@example.com"}, "items": {"product": "Laptop", "quantity": 2, "price": 1200 }, "total_price": 2400 }'
];
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:

* ` OrderDetails
                                   `

Cree la siguiente medida:

* `JsonSet(JsonSet(OrderDetails,'/items/price',1100),'/total_price',2200)`, para establecer el precio en `1100` y el precio total en `2200` utilizando la ruta correcta a las claves respectivas en la cadena JSON.

Tabla de resultados

| OrderDetails | JsonSet(JsonSet(OrderDetails,'/items/price',1100),'/total\_price',2200) |
| --- | --- |
| { "order\_id": "12345", "customer": { "name": "John Doe", "email": "john.doe@example.com"}, "items": {"product": "Laptop", "quantity": 2, "price": 1200 }, "total\_price": 2400 } | {"order\_id":"12345","customer":{"name":"John Doe","email":"john.doe@example.com"},"items":{"product":"Laptop","quantity":2,"price":1100},"total\_price":2200} |

El resultado de la medida actualiza las claves `price` y `total price` a `1100` y `2200` respectivamente.

Vea también:

* [IsJson Función de script y de gráfico](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsJson.htm)

* [JsonGet Función de script y de gráfico](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonGet.htm)