我怎样用jq把一个父元素插入到我的json中?

xxe27gdn  于 2023-01-10  发布在  其他
关注(0)|答案(3)|浏览(88)

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

{
 "option1":true
}

我想获得:

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

但当我这么做的时候
第一个月
它在第一级插入元素,而不是在其前面:

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

这可能吗?

xam8gpfp

xam8gpfp1#

.放在你想要输入数据的地方,在这种情况下,它就是root字符串作为键的值。

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

......适当地发射:

{
  "root": {
    "option1": true
  }
}
4urapxun

4urapxun2#

让我为您提供另一种方法,使用基于遍历路径的unix实用程序**jtc**:

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

更改直接应用到文件中(-f确保)
更新:在最新的jtc版本中,模板功能得到了扩展,因此要使同一个示例正常工作,需要对模板进行细微的更改({}需要拼写为{{}}):

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

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

ymdaylpp

ymdaylpp3#

普通的echocat怎么样?
echo "{\"root\":$(cat file.json)}" | jq

相关问题