以下の original.json
の ".base.data.
" の下に、additional.json
を追加したい。
original.json
{
"description": "sample list",
"base": {
"data": [
{
"name": "foo",
"age": 15
}
// <--- ここに additional.json を追加したい
]
}
}
additional.json
{
"name": "bar",
"age": 30
}
「jq 要素に追加する -jQuery」でググっても、「jq add 特定の要素にオブジェクトを追加する -jQuery」とググっても、-s add
を使って単純にマージさせるだけの記事しか見つからなかったので、自分のググラビリティとして。
TL; DR (今北産業)
- 一旦、追加したい要素を変数に入れてから
+
指示子で追加する。 - 基本構文
jq --argjson <変数名> "<挿入したいデータ>" '<挿入したい先の要素のパス> += [$<変数名>]' <挿入したい先の JSON ファイル>
- マスター、動くものをくれ。
$ jq --argjson myentry "$(cat ./additional.json)" '.base.data += [$myentry]' ./original.json
{
"description": "sample list",
"base": {
"data": [
{
"name": "foo",
"age": 15
},
{
"name": "bar",
"age": 30
}
]
}
}
- オンラインで動作を見る @ paiza.IO
参考文献
- Assignment | v1.6 | Manual | jq @ devdocs.io
- jq - add objects from file into json array | Unix @ StackExchange.com