Convertit le type complexe spécifié expr en une chaîne au format JSON.
Syntaxe
STRING TO_JSON(<expr>)
Paramètres
expr : Obligatoire. Expression d'un type de données complexe. Le type de données doit être ARRAY, MAP ou STRUCT.
Si l'entrée est de type STRUCT (struct<key1:value1, key2:value2) :
Lors de la conversion du type STRUCT en chaîne JSON, toutes les clés sont converties en minuscules.
Si une
valueest NULL, le groupe de données contenant cettevalueest exclu de la sortie. Par exemple, sivalue2est NULL,key2:value2est exclu de la chaîne JSON de sortie.Exécutez la commande
SET odps.sql.bigquery.compatible=true;pour activer le mode compatible avec BigQuery. Dans ce mode, si une valeur est NULL, la paire clé-valeur correspondante est incluse dans la sortie. Par exemple, si value2 est NULL, key2:NULL est inclus dans la sortie.
Valeur de retour
Renvoie une chaîne au format JSON.
Exemples
-
Exemple 1 : Convertir un type complexe en chaîne JSON. Commande d'exemple :
-- Returns {"a":1,"b":2}. SELECT TO_JSON(NAMED_STRUCT('a', 1, 'b', 2)); -- Returns {"time":"26/08/2015"}. SELECT TO_JSON(NAMED_STRUCT('time', "26/08/2015")); -- Returns [{"a":1,"b":2}]. SELECT TO_JSON(ARRAY(NAMED_STRUCT('a', 1, 'b', 2))); -- Returns {"a":{"b":1}}. SELECT TO_JSON(MAP('a', NAMED_STRUCT('b', 1))); -- Returns {"a":1}. SELECT TO_JSON(MAP('a', 1)); -- Returns [{"a":1}]. SELECT TO_JSON(ARRAY((MAP('a', 1)))); -
Exemple 2 : Gérer une valeur NULL dans une expression de type STRUCT. Commande d'exemple :
-- Returns {"a":"B"}. When the STRUCT type is converted to a JSON string, all keys are converted to lowercase. SELECT TO_JSON(NAMED_STRUCT("A", "B")); -- Returns {"k2":"v2"}. The group of data that contains a NULL value is not included in the output JSON string. SELECT TO_JSON(NAMED_STRUCT("k1", CAST(NULL AS STRING), "k2", "v2")); -
Exemple 3 : Convertir une expression de type STRUCT contenant une valeur NULL en mode compatible avec BigQuery. Commande d'exemple :
-- Returns {"k1":null,"k2":"v2"} SET odps.sql.bigquery.compatible=true; SELECT TO_JSON(named_struct("k1", CAST(NULL AS STRING), "k2", "v2")); -- Returns {"id":null,"tag":null,"group":null,"success":true} SET odps.sql.bigquery.compatible=true; SELECT TO_JSON(struct(experiment_id AS id,tag AS tag,`group`,`success`)) AS experiment_in_json FROM( SELECT CAST(NULL AS string) AS experiment_id, CAST(NULL AS string) AS tag, CAST(NULL AS string) AS `group`, TRUE AS `success` );