web-dev-qa-db-ja.com

jqを使用した子JSON要素の値の編集

子供の値を変更するためにjqを使用しようとしています。たとえば、「test2」の値を["yo"、 "bye"]から["hi"]に変更したいとします。

{
   "title": "hello",
   "body": {
       "test1": 123,
       "test2": [
           "yo",
           "bye"  
       ]
   }
}

これまでのところ、ルートの子であるキーの値のみを変更できました。これを取得してタイトルの代わりに.body.test2に移動する方法がわかりません。

cat test.conf | jq 'to_entries | map(if .key == "title" then . + {"value":"hello world"} else . end) | from_entries' > test2.conf
8
Maboo

(投稿 @ glennjackman システムが質問を自動削除しないように、コミュニティの回答としてコメント)

jq '.body.test2 = ["hi"]'やります

16
Delgan