使用jq将一个json文件加载到另一个json文件的哈希中

时间:2017-12-14 21:49:06

标签: json merge jq

我试图找出如何使用jq将一个json文件的内容加载到另一个文件的哈希中。 E.g:

此文件:

{
  "annotations": {...},
  "rows": [ {...}, {...}]
}

应该插入到哈希仪表板的这个文件中:

{
  "dashboard": { },
  "overwrite": true,
  "message": "new commit"
}

所以生成的文件应该是

{
  "dashboard": {
     "annotations": {...},
     "rows": [ {...}, {...}]
  },
  "overwrite": true,
  "message": "new commit"
}

我当时想用管道来做或者| =运算符,但我无法弄清楚如何使用一个内容并将其分配给另一个文件的选择过滤器。

2 个答案:

答案 0 :(得分:0)

jq 解决方案:

jq --slurpfile annot annot.json '.dashboard |= $annot[0]' dashb.json
  

--slurpfile variable-name filename

     

此选项读取指定文件中的所有JSON文本并绑定   已解析的JSON值的数组到给定的全局变量。

答案 1 :(得分:0)

如果你的jq没有--slurpfile,那么你可以运行jq,如下所示:

jq -s '.[0] as $fragment | .[1] | (.dashboard |= $fragment)' fragment.json dashboard.json