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

MaxCompute:ドキュメント

最終更新日:Mar 26, 2026

指定された位置に JSON 値を JSON 配列またはオブジェクトに挿入します。

構文

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

パラメーター

パラメーター必須データ型説明
inputはいJSON 配列または JSON オブジェクト値を挿入する対象の JSON ドキュメントです。
pathはいARRAY STRING値を挿入する位置です。
valueはいJSON挿入する JSON 値です。
insert_afterはいブール値input が配列を含み、かつ path で指定された要素が存在する場合の挿入方向を制御します。true の場合はその位置の後に挿入し、false の場合はその位置の前に挿入します。デフォルト値は false です。

戻り値

変更後の JSON ドキュメントを返します。

注意事項

配列への挿入ルール: 配列に挿入する場合、配列の長さを npath で指定されたターゲットインデックスを m とします。

条件動作
m >= n配列の末尾に追加されます。
m < -n配列の先頭に追加されます。
-n <= m < ninsert_after の値に応じて、位置 m
input に配列が含まれない場合デフォルトで末尾に挿入されます。

使用例

JSON オブジェクトへの挿入

ネストされたオブジェクト f2 内にキー t3 を追加します。

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

結果:{"f1":1,"f2":{"t1":1,"t2":2,"t3":3}}

JSON 配列への挿入

以下のすべての例では、入力として {"f1":[0,1,2]} を使用します。この配列の長さは 3 であるため、n = 3 です。

特定のインデックスの前または後に挿入-n <= m < n):

-- インデックス 0 の前に 10 を挿入 (insert_after = false)
SELECT json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', false);
-- 結果: {"f1":[10,0,1,2]}

-- インデックス 0 の後に 10 を挿入 (insert_after = true)
SELECT json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', true);
-- 結果: {"f1":[0,10,1,2]}

-- インデックス 1 の前に 10 を挿入 (insert_after = false)
SELECT json_insert(JSON'{"f1":[0,1,2]}', array("f1","1"), JSON'10', false);
-- 結果: {"f1":[0,10,1,2]}

末尾に追加m >= n、インデックス 4 >= 長さ 3):

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

先頭に追加m < -n、インデックス -4 < -3):

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