如何使用jq将父元素插入json?

时间:2019-05-10 15:39:17

标签: json jq

我想用jq在我的json上插入新的根元素,我的目标是通过在根1之前添加一个级别来操纵json层次结构:

json示例:

{
 "option1":true
}

我想获得:

{
 "root":
 {
  "option1":true
 }
}

但是当我这样做时:

$ echo '{"option1":true}' | jq -r '. + {"root"}'

它将元素插入到第一级,而不是在其之前:

{
 "root":null
 "option1":true
}

有可能吗?

2 个答案:

答案 0 :(得分:4)

t.string "link_file_id" t.string "link_file_content_type" t.string "link_file_filename" t.string "link_file_size" 放在要输入数据的位置。在这种情况下,这就是.字符串是键的值。

root

...正确发射:

jq '{"root": .}' <<<'{"option1": true}'

答案 1 :(得分:2)

让我为您提供一种替代方法,使用基于步行路径的Unix实用程序 DataSearch

bash $  jtc -u'[^0]' -T'{ "root": {} }' -f file.json 
bash $ 
bash $ jtc file.json 
{
   "root": {
      "option1": true
   }
}
bash $ 

直接应用到文件中的更改(-f确保做到这一点)

PS>披露:我是jtc工具的创建者