全部產品
Search
文件中心

MaxCompute:JSON_INSERT

更新時間:May 28, 2025

在JSON檔案指定位置中插入JSON值。

命令格式

JSON json_insert(JSON <input>, ARRAY STRING <path>, JSON <value>, BOOLEAN <insert_after>);

參數說明

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

  • path:必填,待插入的JSON內容的位置。

  • value:必填,待插入的JSON內容。

  • insert_after:必填。

    • 若input參數中包含數組,且指定path的值已存在時,添加值的位置:

      • true:在指定位置後面插入新值。

      • false(預設值):在指定位置前面插入新值。

    • 說明

      若input參數中包含數組,數組中的JSON內容插入規則,假設input中數組的長度為n,指定插入的位置為m時:

      • 如果 m>=n,在數組末尾添加值value。

      • 如果 m<-n,在數組開頭添加值value。

      • 如果 -n<=m<n,根據insert_after的值確定添加值value的位置。

    • 若input參數中未包含數組,預設將值插入至末尾。

傳回值說明

修改後的JSON。

使用樣本

  • 樣本1:在指定位置插入新值。

    select json_insert(JSON'{"f1":1,"f2":{"t1":1,"t2":2}}', 
                       array("f2","t3"), 
                       JSON'3',
                       false
                      );

    返回結果如下。

    +-----+
    | _c0 |
    +-----+
    | {"f1":1,"f2":{"t1":1,"t2":2,"t3":3}} |
    +-----+
  • 樣本2:在數組指定值前面插入資料。

    select json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', false);

    返回結果如下。

    +-----+
    | _c0 |
    +-----+
    | {"f1":[10,0,1,2]} |
    +-----+
  • 樣本3:在數組指定值後面插入資料。

    select json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', true);

    返回結果如下。

    +-----+
    | _c0 |
    +-----+
    | {"f1":[0,10,1,2]} |
    +-----+
  • 樣本4:在數組中插入值,當插入的位置大於JSON內容數組的長度時,在數組末尾插入。

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

    返回結果如下。

    +-----+
    | _c0 |
    +-----+
    | {"f1":[0,1,2,4]} |
    +-----+
  • 樣本5:在數組中插入值,當插入的位置小於JSON內容數組長度的負數時,在數組開頭插入。

    select json_insert(JSON'{"f1":[0,1,2]}', array("f1","-4"), JSON'4', false);

    返回結果如下。

    +-----+
    | _c0 |
    +-----+
    | {"f1":[4,0,1,2]} |
    +-----+
  • 樣本6:在數組中插入值,當插入位置介於數組長度(不包含)與長度負數時,在指定位置插入。

    select json_insert(JSON'{"f1":[0,1,2]}', array("f1","1"), JSON'10', false);

    返回結果如下。

    +-----+
    | _c0 |
    +-----+
    | {"f1":[0,10,1,2]} |
    +-----+