我有两个结构相似的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