全部產品
Search
文件中心

MaxCompute:JSON_STRIP_NULLS

更新時間:Aug 05, 2025

從JSON對象或JSON數組中移除所有值為null的欄位或元素。

命令格式

JSON JSON_STRIP_NULLS(
  JSON <json_expr>
  [, BOOLEAN <include_arrays> ]
  [, BOOLEAN <remove_empty> ]
  [, STRING <json_path> ]
)

參數說明

參數

是否必填

描述

json_expr

JSON類型。JSON對象或JSON數組,詳情請參見JSON資料類型

include_arrays

BOOLEAN類型。是否從JSON數組中刪除JSON空值,取值如下:

  • 不填/值為TRUE(預設):刪除。

  • 值為FALSE:不刪除。

remove_empty

BOOLEAN類型。是否會在刪除JSON空值後刪除空的JSON對象,取值如下:

  • 不填/值為FALSE(預設):不刪除。

  • 值為TRUE:刪除。

說明

remove_empty值為TRUE,且include_arrays值為TRUE或省略(不填),則該函數也會刪除空的JSON數組。

json_path

STRING類型。對於json_expr,移除json_path路徑下的JSON空值。

說明

若使用json_path參數,必須保證有4個入參,且json_path為第4個入參。

傳回值說明

返回JSON類型。返回規則如下:

  • 如果JSON對象中的value為JSON null,則會刪除關聯的索引值對。

  • 如果函數產生的JSON中沒有任何內容,則返回JSON null。

  • 如果json_path為NULL或無效,則返回json_expr

  • 如果json_exprinclude_arraysremove_empty為NULL,則返回NULL。

使用樣本

  • 樣本1:從JSON對象和JSON數組中刪除JSON空值。

    SELECT 
      JSON_STRIP_NULLS(NULL) AS json_data1,
      JSON_STRIP_NULLS(JSON 'null') AS json_data2,
      JSON_STRIP_NULLS(JSON '[1, null, 2, null]') AS json_data3,
      JSON_STRIP_NULLS(JSON '[1, null, 2, null]', FALSE) AS json_data4,
      JSON_STRIP_NULLS(JSON '[1, null, 2, null, [null]]',TRUE,TRUE) AS json_data5,
      JSON_STRIP_NULLS(JSON '[1, null, 2, null, [null]]',NULL,TRUE) AS json_data6,
      JSON_STRIP_NULLS(
        JSON '{"a": {"b": {"c": null}}, "d": [null], "e": [], "f": 1}',
        FALSE,TRUE) AS json_data7,
      JSON_STRIP_NULLS(
        JSON '{"a": {"b": {"c": null}}, "d": [null], "e": [], "f": 1}',
        TRUE,TRUE) AS json_data8;

    返回結果如下:

    +------------+------------+------------+-----------------+------------+------------+---------------------------+------------+
    | json_data1 | json_data2 | json_data3 | json_data4      | json_data5 | json_data6 | json_data7                | json_data8 |
    +------------+------------+------------+-----------------+------------+------------+---------------------------+------------+
    | NULL       | null       | [1,2]      | [1,null,2,null] | [1,2]      | NULL       | {"d":[null],"e":[],"f":1} | {"f":1}    |
    +------------+------------+------------+-----------------+------------+------------+---------------------------+------------+
  • 樣本2:刪除指定JSON路徑下的Null 物件。

    SELECT JSON_STRIP_NULLS(
      JSON '{
        "person": {
            "name": "Alice", 
            "address": {
                "street": null, 
                "city": "New York",
                "zip": null
             }, 
             "phone": null
         }, 
         "company": {
           "name": "Acme Corp", 
           "location": null
           }
      }',
      true,
      true, 
      '$.person.address'
    ) AS json_data;

    返回結果如下:

    {"person":{"name":"Alice","phone":null,"address":{"city":"New York"}},"company":{"name":"Acme Corp","location":null}}
  • 樣本3:json_path無效或不合法時,函數不做處理,直接返回json_expr

    SELECT JSON_STRIP_NULLS(
      JSON '{
        "person": {
            "name": "Alice", 
            "address": {
                "street": null, 
                "city": "New York", 
                "zip": null
              }, 
              "phone": null
         }, 
         "company": {
            "name": "Acme Corp", 
            "location": null
          },
          "uid":null
      }',
      true,
      true, 
      '$person.a'
    ) AS json_data;

    返回結果如下:

    {"uid":null,"person":{"name":"Alice","phone":null,"address":{"zip":null,"city":"New York","street":null}},"company":{"name":"Acme Corp","location":null}}

相關函數

JSON_STRIP_NULLS函數屬於JSON函數,更多JSON類型函數請參見JSON函數