# IsJson Fonction de script et de graphique

IsJson() teste si une chaîne spécifiée contient des données JSON (JavaScript Object Notation) valides. Vous pouvez également valider un type de données JSON spécifique.

Syntaxe :

value IsJson(json [, type])

Type de données renvoyé : double

Arguments

| Argument | Description |
| --- | --- |
| json | Chaîne à tester. Elle peut contenir des espaces supplémentaires ou de nouvelles lignes. |
| type | Argument facultatif qui spécifie le type de données JSON à tester.<br><br><ul> <li> <p>'value' (par défaut)</p> </li> <li> <p>'object'</p> </li> <li> <p>'array'</p> </li> <li> <p>'string'</p> </li> <li> <p>'number'</p> </li> <li> <p>'boolean'</p> </li> <li> <p>'null' </p> </li> </ul> |

Exemple : Expressions de graphique valides et non valides

| Exemple | Résultat |
| --- | --- |
| `IsJson( 'null' )` | Renvoie `-1 (true)`. |
| `IsJson( '"abc"', 'value' )` | Renvoie `-1 (true)`. |
| `IsJson( '"abc"', 'string' )` | Renvoie `-1 (true)`. |
| `IsJson( 123, 'number' )` | Renvoie `-1 (true)`. |
| `IsJson( 'text' )` | Renvoie `0 (false)`, `'text'` n'est pas une valeur JSON valide. |
| `IsJson( '"text"', 'number' )` | Renvoie `0 (false)`, `'"text"'` n'est pas un nombre JSON valide. |
| `IsJson( '"text"', 'text' )` | Renvoie `  0 (false) `, `'text'` n'est pas un type JSON valide. |

## Exemple - Les bases de IsJson

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

#### Expression de graphique

Vue d'ensemble

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 `API_Response`.

* Champ dérivé appelé `ID`. Ce champ utilise la fonction `Rec()` pour énumérer les enregistrements d'entrée.

Script de chargement

```
Example:
Load
Recno() AS ID, API_Response
inline [
API_Response
'{"id": 1, "name": "Alice"}'
'{"id": 2, "name": "Bob"}'
'{invalid json string}'
'{"id": 4, "name": "Charlie"}'
'{"id": 5, name: "David"}'
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* ` ID
                                   `
* ` API_Response
                                   `

Créez la dimension calculée suivante :

* `=IsJson(API_Response)` pour calculer si les valeurs contenues dans `API_Response` sont des valeurs JSON valides.

Tableau de résultats

| ID | API\_Response | IsJson(API\_Response) |
| --- | --- | --- |
| 1 | {"id": 1, "name": "Alice"} | -1 (true) |
| 2 | {"id": 2, "name": "Bob"} | -1 (true) |
| 3 | {invalid json string} | 0 (false) |
| 4 | {"id": 4, "name": "Charlie"} | -1 (true) |
| 5 | {"id": 5, name: "David"} | 0 (false) |

La sortie renvoie `-1` ou true pour les valeurs dont la syntaxe JSON est valide.

La sortie renvoie `0` ou false, pour les enregistrements d'ID suivants (`3` et `5`) avec une syntaxe JSON non valide :

* `{invalid json string}` - La chaîne de texte ne représente pas une structure de réponse JSON valide.

* `{"id": 5, name: "David"}` - Il manque des guillemets à la deuxième paire clé-valeur autour de la clé `"name"`.

## Exemple - Scénario IsJson

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

#### Expression de graphique

Vue d'ensemble

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 les mesures suivantes :

* `IsJson( OrderDetails)` pour calculer si les valeurs contenues dans `OrderDetails` sont des valeurs JSON valides.

* `IsJson( JsonGet ( OrderDetails, '/items/price' ), 'number' )`, via la fonction `JsonGet`, récupère le texte JSON de la clé `price` et valide le fait que la valeur de `price` est un nombre.

Tableau de résultats

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

La première mesure renvoie `-1 (true)`, car `OrderDetails` contient une syntaxe JSON valide.

La deuxième mesure renvoie `-1 (true)`, car la valeur de la clé `price` est un nombre valide, `1200`.

Consultez aussi :

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

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