# JsonSet Fonction de script et de graphique

JsonSet() modifie une chaîne contenant des données JSON (JavaScript Object Notation). Cette instruction peut définir ou insérer une valeur JSON avec le nouvel emplacement spécifié par le chemin d'accès. Les données doivent être conformes au format JSON, mais elles peuvent contenir des espaces supplémentaires ou de nouvelles lignes.

Note InformationsVous pouvez ajouter autant de paires nom-valeur que vous le souhaitez avec JsonSet.

Syntaxe :

value JsonSet(json, path, value)

Type de données renvoyé : double

Arguments

| Argument | Description |
| --- | --- |
| json | Chaîne contenant des données JSON. |
| path | Le chemin d'accès doit être spécifié conformément à [RFC 6901](https://datatracker.ietf.org/doc/html/rfc6901). Cela permet d'accumuler des propriétés au sein des données JSON sans utiliser de fonctions de sous-chaîne ou d'index complexes ni de concaténation. |
| value | Nouvelle valeur de chaîne au format JSON. |

Exemple : Expressions de graphique valides et non valides

| Exemple | Résultat |
| --- | --- |
| `JsonSet( '{}','/a','"b"' )` | Renvoie `{"a":"b"}` |
| `JsonSet( '[]','/0','"x"' )` | Renvoie `["x"]`. |
| `JsonSet( '"abc"','','123' )` | Renvoie `123` |
| `JsonSet( '"abc"','/x','123' )` | Renvoie `null`. Le chemin d'accès ne pointe pas vers une partie valide des données JSON. |
| `JsonSet( '{"a":{"b":"c"}}','a/b','"x"' )` | Renvoie `null`. Le chemin d'accès n'est pas valide. |
| `JsonSet( '{"a":"b"}','/a','abc' )` | Renvoie `null`. La valeur n'est pas au format JSON valide. La chaîne doit être encadrée par des guillemets. |

## Exemple - Les bases de JsonSet

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

#### Expression de graphique

Vue d'ensemble

Des données JSON sont reçues sous forme de chaîne de texte sur une seule ligne. Vous souhaitez mettre à jour le prix de l'article et le prix total de la commande en conséquence.

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données chargé dans une table de données appelée `Example`.

* Champ dans la table de données portant le nom `OrderDetails`.

Script de chargement

```
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 }'
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension :

* ` OrderDetails
                                   `

Créez la mesure suivante :

* `JsonSet(JsonSet(OrderDetails,'/items/price',1100),'/total_price',2200)` pour définir le prix sur `1100` et le prix total sur `2200` en utilisant le chemin d'accès correct aux clés respectives dans la chaîne JSON.

Tableau de résultats

| 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} |

La sortie de la mesure met à jour les clés `price` et `total price` sur `1100` et sur `2200`, respectivement.

Consultez aussi :

* [IsJson Fonction de script et de graphique](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsJson.htm)

* [JsonGet Fonction de script et de graphique](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonGet.htm)