使用 jq 将一个字段从 JSON 合并到另一个 JSON
Merging one field from a JSON into another JSON using jq
我有两个 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
我有两个 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