すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:TO_JSON

最終更新日:Oct 23, 2025

指定された複合型の expr を JSON フォーマットの文字列に変換します。

構文

STRING TO_JSON(<expr>)

パラメーター

expr: 必須。複合データ型の式。データ型は ARRAY、MAP、または STRUCT である必要があります。

入力が STRUCT 型 (struct<key1:value1, key2:value2) の場合:

  • STRUCT 型が JSON 文字列に変換されるとき、すべてのキーは小文字に変換されます。

  • value が NULL の場合、その value を含むデータグループは出力から除外されます。たとえば、value2 が NULL の場合、key2:value2 は出力される JSON 文字列から除外されます。

  • SET odps.sql.bigquery.compatible=true; コマンドを実行して、BigQuery 互換モードを有効にできます。このモードでは、値が NULL の場合、対応するキーと値のペアが出力に含まれます。たとえば、value2 が NULL の場合、key2:NULL が出力に含まれます。

戻り値

JSON フォーマットの文字列を返します。

  • 例 1: 複合型を JSON 文字列に変換します。コマンドの例:

    -- {"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 型の式で NULL 値を処理します。コマンドの例:

    -- {"a":"B"} を返します。STRUCT 型が JSON 文字列に変換されるとき、すべてのキーは小文字に変換されます。
    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 値を含む STRUCT 型の式を変換します。コマンドの例:

    -- {"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`
    );