將給定的複雜類型expr,以JSON字串格式輸出。
命令格式
STRING TO_JSON(<expr>)參數說明
expr:必填。ARRAY、MAP、STRUCT複雜類型。
如果輸入為STRUCT類型(struct<key1:value1, key2:value2):
轉換為JSON字串時,Key會全部轉為小寫。
value如果為NULL,則不輸出value本組的資料。例如value2為NULL,則key2:value2不會輸出到JSON字串。執行
SET odps.sql.bigquery.compatible=true;命令開啟BigQuery相容模式,在該模式下value如果為NULL,輸出value本組的資料。例如value2為NULL,則輸出key2:NULL。
傳回值說明
返回JSON格式的字串。
使用樣本
樣本1:將指定複雜類型以指定格式輸出。命令樣本如下。
--返回{"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))));樣本2:輸入為STRUCT類型的特殊情況。命令樣本如下。
-- 返回{"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"));樣本3:BigQuery相容模式下,NULL值所在組的資料,會輸出到JSON字串。命令樣本如下。
-- 返回 {"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` );