Catégories :

Fonctions de données semi-structurées et structurées (analyse)

TRY_PARSE_JSON

Une version spéciale de PARSE_JSON qui renvoie une valeur NULL si une erreur se produit pendant l’analyse.

Syntaxe

TRY_PARSE_JSON( <expr> [ , '<parameter>' ] )
Copy

Arguments

Obligatoire :

expr

Une expression de type chaîne (par exemple, VARCHAR) qui contient des informations JSON valides.

Facultatif :

'parameter'

Constante de chaîne qui spécifie le paramètre utilisé pour rechercher les correspondances. Valeurs prises en charge :

Paramètre

Description

d

Autoriser les clés en double dans les objets JSON. Si un objet JSON contient une clé en double, l’objet renvoyé contient une instance unique de cette clé avec la dernière valeur spécifiée pour cette clé.

s

Ne pas autoriser les clés en double dans les objets JSON (strict). Cette valeur est la valeur par défaut.

Renvoie

Renvoie une valeur de type VARIANT qui contient un document JSON.

Si l’entrée est NULL ou si une erreur se produit lors de l’analyse, la fonction renvoie NULL.

Cette fonction ne renvoie pas de type structuré.

Notes sur l’utilisation

Pour les Notes sur l’utilisation, voir PARSE_JSON.

Exemples

Cela montre un exemple de stockage de différents types de données dans une colonne VARIANT en appelant TRY_PARSE_JSON pour analyser des chaînes contenant des valeurs pouvant être analysées comme JSON :

Créez et remplissez une table.

CREATE OR REPLACE TEMPORARY TABLE vartab (ID INTEGER, v VARCHAR);

INSERT INTO vartab (id, v) VALUES
  (1, '[-1, 12, 289, 2188, FALSE,]'),
  (2, '{ "x" : "abc", "y" : FALSE, "z": 10} '),
  (3, '{ "bad" : "json", "missing" : TRUE, "close_brace": 10 ');
Copy

Interroger les données à l’aide de TRY_PARSE_JSON. Notez que la valeur de la troisième ligne est NULL. Si la requête utilisait PARSE_JSON plutôt que TRY_PARSE_JSON, cela échouerait.

SELECT ID, TRY_PARSE_JSON(v)
  FROM vartab
  ORDER BY ID;
Copy
+----+-------------------+
| ID | TRY_PARSE_JSON(V) |
|----+-------------------|
|  1 | [                 |
|    |   -1,             |
|    |   12,             |
|    |   289,            |
|    |   2188,           |
|    |   false,          |
|    |   undefined       |
|    | ]                 |
|  2 | {                 |
|    |   "x": "abc",     |
|    |   "y": false,     |
|    |   "z": 10         |
|    | }                 |
|  3 | NULL              |
+----+-------------------+

Voir PARSE_JSON pour plus d’exemples.