全部產品
Search
文件中心

MaxCompute:TO_JSON

更新時間:Jul 26, 2025

將給定的複雜類型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`
    );