使用jq将JSON中的一个字段合并到另一个JSON中



我有两个结构相似的JSON文件。我想从第一个JSON文件中获取一个项,并使用jq命令将其添加到第二个JSON文件。我一直在尝试使用map*,但没有成功。

我有这个文件:

{
"items": {
"foo": {
"key": "value1"
},
"bar": {
"key": "value2"
}
}
}

这个文件:

{
"items": {
"baz": {
"key": "value3"
},
"qux": {
"key": "value4"
}
}
}

我想把第一个文件上的第一个项目合并到第二个文件中,以获得以下输出:

{
"items": {
"baz": {
"key": "value3"
},
"qux": {
"key": "value4"
},
"foo": {
"key": "value1"
}
}
}

使用to_entries[0]缩减为第一项,to_entries重构对象,然后使用|=更新items对象,并使用*与通过input:访问的第二个文件合并

jq '(.items |= ([to_entries[0]] | from_entries)) * input' 1.json 2.json
{
"items": {
"foo": {
"key": "value1"
},
"baz": {
"key": "value3"
},
"qux": {
"key": "value4"
}
}
}

演示

jq '.items.foo = input.items.foo' 2.json 1.json

最新更新