全部產品
Search
文件中心

MaxCompute:JSON_SET

更新時間:Feb 28, 2024

替換JSON檔案指定位置的值或新增對應的值。

命令格式

JSON json_set(JSON <input>, ARRAY STRING <path>, JSON <value>, BOOLEAN <create_if_missing>);

參數說明

  • input:必填,被替換的JSON內容。該參數支援的類型為:JSON ARRAY、JSON OBJECT。

  • path:必填,被替換的JSON內容的位置,類型為ARRAY<STRING>,ARRAY裡的每一個值對應為JSON的一層嵌套定位路徑值,如果JSON是n層嵌套內容,那麼ARRAY數組對應為n個值。

  • value:必填,待替換的JSON值。

  • create_if_missing:必填,指定位置的值不存在時,是否將待替換的JSON內容添加到input中。取值為:

    • true:增加。

    • false(預設值):不增加。

傳回值

修改後的JSON。

使用樣本

  • 樣本1:替換JSON指定位置的值。

    select json_set(JSON'[{"f1":1,"f2":null},2,null,3]',
                    array("0","f1"), 
                    JSON'[2,3,4]', 
                    false
                   );

    返回結果如下。

    +-----+
    | _c0 |
    +-----+
    | [{"f1":[2,3,4],"f2":null},2,null,3] |
    +-----+
  • 樣本2:替換JSON指定位置的值,值不存在就不替換。

    select json_set(JSON'[{"f1":1,"f2":null},2,null,3]', 
                    array("0","f3"), 
                    JSON'[2,3,4]', 
                    false);

    返回結果如下。

    +-----+
    | _c0 |
    +-----+
    | [{"f1":1,"f2":null},2,null,3] |
    +-----+
  • 樣本3:替換JSON指定位置的值,值不存在就新增。

    select json_set(JSON'[{"f1":1,"f2":null},2,null,3]', 
                    array("0","f3"), 
                    JSON'[2,3,4]', 
                    true);

    返回結果如下。

    +-----+
    | _c0 |
    +-----+
    | [{"f1":1,"f2":null,"f3":[2,3,4]},2,null,3] |
    +-----+