Convierte el tipo complejo especificado expr en una cadena con formato JSON.
Sintaxis
STRING TO_JSON(<expr>)
Parámetros
expr: obligatorio. Expresión de un tipo de datos complejo. El tipo de datos debe ser ARRAY, MAP o STRUCT.
Si la entrada es de tipo STRUCT (struct<key1:value1, key2:value2):
Cuando el tipo STRUCT se convierte en una cadena JSON, todas las claves se transforman a minúsculas.
Si un
valuees NULL, el grupo de datos que contiene esevaluese excluye de la salida. Por ejemplo, sivalue2es NULL,key2:value2se excluye de la cadena JSON de salida.Ejecute el comando
SET odps.sql.bigquery.compatible=true;para habilitar el modo compatible con BigQuery. En este modo, si un valor es NULL, el par clave-valor correspondiente se incluye en la salida. Por ejemplo, si value2 es NULL, key2:NULL se incluye en la salida.
Valor de retorno
Devuelve una cadena con formato JSON.
Ejemplos
-
Ejemplo 1: convertir un tipo complejo en una cadena JSON. Comando de ejemplo:
-- 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)))); -
Ejemplo 2: manejar un valor NULL en una expresión de tipo STRUCT. Comando de ejemplo:
-- 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")); -
Ejemplo 3: convertir una expresión de tipo STRUCT que contiene un valor NULL en el modo compatible con BigQuery. Comando de ejemplo:
-- 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` );