json - 使用jq将子文件合并到主文件中
问题描述
有很多jq
关于合并 JSON 文档的相关问题,但它们似乎都是关于合并具有相同结构的文档。
我的问题不同,因为我需要将子文档合并到父文档中,其中子文档和父文档具有不同的结构。
父文档如下所示:
{
"resources": [
{
"name": "child0",
"properties": {
"template": {}
}
},
{
"name": "child1",
"properties": {
"template": {}
}
},
{
"name": "child2",
"properties": {
"template": {}
}
}
]
}
我需要做的是在子文档中合并.resources[].properties.template
,例如第一个文件在.resources[0].properties.template
,第二个文件在.resources[1].properties.template
等。
请注意,子文档的结构在这里并不重要,因为我想将它们全部合并。
我实际上已经让它工作了,但是使用了多个命令:
jq '.resources[0].properties.template += input' main.json child0.json > temp0.json
jq '.resources[1].properties.template += input' temp0.json child1.json > temp1.json
jq '.resources[2].properties.template += input' temp1.json child2.json > temp2.json
mv temp2.json merged.json
rm temp*.json
这很丑 - 我正在寻找一个jq
可以合并到子文件中的命令。
解决方案
你很亲密。假设对象的resources
数量等于子文档的数量,这应该可以解决问题:
jq '.resources[].properties.template |= . + input' parent children...
推荐阅读
- ionic-framework - 未捕获(承诺):错误:无法匹配任何路由。URL 段:'tabs/tab1'
- python - 如何在 Python 中创建自定义类型验证函数?
- esper - esper 查询执行了一半——实际上只有一部分在运行
- json - 如何在没有占位符的情况下更改空手道 DSL 中文本响应的所有外观?
- node.js - 生产实例与本地实例的 mongodb 查询性能如何慢得多
- vue.js - 将 v-model 与 Vuex 商店一起使用时出现 Vuetify 导航抽屉错误
- node.js - 单身人士没有在节点中保持奇偶性
- javascript - ngIf: ngIf 模板中的异步
- r - R - 从多列中减去相同的值
- javascript - Bootstrap - 两个下拉菜单,但只有我点击的第一个有效