【发布时间】:2017-10-19 17:03:33
【问题描述】:
我正在尝试替换复杂 JSON 对象中的对象。似乎jq 工具可以提供完美的解决方案,但我真的在为正确的选择/过滤器链而苦苦挣扎。
我有一个完整的配置 JSON 对象,看起来像这样(里面有更多的键,为了说明而缩短了它):
{
"some-array": [
{
"name": "foo",
"attr": "value"
},
{
"name": "foo bar",
"attr": "value"
},
{
"name": "foo bar baz",
"attr": "value"
}
],
"some-other-array": []
}
现在我有另一个对象,其中包含一个包含更新对象的数组,我需要以某种方式与完整配置合并。我需要按名称查找嵌套对象,如果不存在则添加它,如果存在则替换它。
{
"some-array": [
{
"name": "foo",
"attr": "new-value",
"new-attrib": "new-value"
},
{
"name": "foo bar",
"attr": "new-value"
}
]
}
所以,对于上面的例子,我的预期结果是:
{
"some-array": [
{
"name": "foo",
"attr": "new-value",
"new-attrib": "new-value"
},
{
"name": "foo bar",
"attr": "new-value"
},
{
"name": "foo bar baz",
"attr": "value"
}
],
"some-other-array": []
}
我已经尝试过 select(."some-array"[].name == "foo") 和其他一些东西作为 jq 过滤器,但我在这里努力前进,非常感谢一些灵感/实际解决方案。
谁能告诉我jq 是否真的可以实现我想要实现的目标,还是我必须找到其他解决方案?
【问题讨论】: