Convertit l'expression complexe expr fournie en une chaîne au format JSON.
Syntaxe
STRING TO_JSON(<expr>)
Paramètres
expr : obligatoire. Types de données complexes ARRAY, MAP ou STRUCT.
Si l'entrée est de type STRUCT (struct<key1:value1, key2:value2 ) :
Lors de la conversion en chaîne JSON, toutes les clés sont converties en minuscules.
Si la
valueest NULL, le groupe de données correspondant n'est pas inclus dans la sortievalue. Par exemple, sivalue2est NULL, la pairekey2:value2n'apparaît pas dans la chaîne JSON.Exécutez la commande
SET odps.sql.bigquery.compatible=true;pour activer le mode de compatibilité BigQuery. Dans ce mode, si une valeur est NULL, le groupe de données correspondant est inclus dans la sortie. Par exemple, si value2 est NULL, la sortie est key2:NULL.
Valeur de retour
Renvoie une chaîne au format JSON.
Exemples
-
Exemple 1 : convertir un type de données complexe spécifié au format souhaité. Voici des exemples de commandes.
--返回{"a":1,"b":2}。 SELECT TO_JSON(NAMED_STRUCT('a', 1, 'b', 2)); --返回{"time":"26/08/2015"}。 SELECT TO_JSON(NAMED_STRUCT('time', "26/08/2015")); --返回[{"a":1,"b":2}]。 SELECT TO_JSON(ARRAY(NAMED_STRUCT('a', 1, 'b', 2))); --返回{"a":{"b":1}}。 SELECT TO_JSON(MAP('a', NAMED_STRUCT('b', 1))); --返回{"a":1}。 SELECT TO_JSON(MAP('a', 1)); --返回[{"a":1}]。 SELECT TO_JSON(ARRAY((MAP('a', 1)))); -
Exemple 2 : cas particuliers où l'entrée est de type STRUCT. Voici des exemples de commandes.
-- 返回{"a":"B"}。STRUCT类型转换为JSON字符串时,key会全部转为小写。 SELECT TO_JSON(NAMED_STRUCT("A", "B")); -- 返回{"k2":"v2"}。NULL值所在组的数据,不会输出到JSON字符串。 SELECT TO_JSON(NAMED_STRUCT("k1", CAST(NULL AS STRING), "k2", "v2")); -
Exemple 3 : en mode de compatibilité BigQuery, les groupes de données contenant des valeurs NULL sont inclus dans la chaîne JSON. Voici des exemples de commandes.
-- 返回 {"k1":null,"k2":"v2"} SET odps.sql.bigquery.compatible=true; SELECT TO_JSON(named_struct("k1", CAST(NULL AS STRING), "k2", "v2")); -- 返回{"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` );