如何使用 jq 将 2 JSON 个对象合并为一个对象?
How to combine 2 JSON objects into one with jq?
我在两个文件(result_0.json 和 result_1.json)中有两个 JSON 对象,它们看起来像这样
{
"data": {
"pools": [
{
"id": "1"
},
{
"id": "2"
}
]
}
}
像这样:
{
"data": {
"pools": [
{
"id": "3"
},
{
"id": "4"
}
]
}
}
我想要得到的是这样的:
{
"data": {
"pools": [
{
"id": "1"
},
{
"id": "2"
},
{
"id": "3"
},
{
"id": "4"
}
]
}
}
怎么做到的?我试过了
jq -s add result_0.json result_1.json
但它只是用 result_1.json.
的值覆盖 result_0.json 中的值
如果 .data
和 .pool
是 json 文件中唯一的键,您可以使用
jq -n '{ data: { pools: [inputs.data.pools] | add } }' result0 result1
这将创建所需的输出:
{
"data": {
"pools": [
{
"id": "1"
},
{
"id": "2"
},
{
"id": "3"
},
{
"id": "4"
}
]
}
}
关于inputs
关键字,考虑阅读JQ's docs on this part。
我在两个文件(result_0.json 和 result_1.json)中有两个 JSON 对象,它们看起来像这样
{
"data": {
"pools": [
{
"id": "1"
},
{
"id": "2"
}
]
}
}
像这样:
{
"data": {
"pools": [
{
"id": "3"
},
{
"id": "4"
}
]
}
}
我想要得到的是这样的:
{
"data": {
"pools": [
{
"id": "1"
},
{
"id": "2"
},
{
"id": "3"
},
{
"id": "4"
}
]
}
}
怎么做到的?我试过了
jq -s add result_0.json result_1.json
但它只是用 result_1.json.
的值覆盖 result_0.json 中的值如果 .data
和 .pool
是 json 文件中唯一的键,您可以使用
jq -n '{ data: { pools: [inputs.data.pools] | add } }' result0 result1
这将创建所需的输出:
{
"data": {
"pools": [
{
"id": "1"
},
{
"id": "2"
},
{
"id": "3"
},
{
"id": "4"
}
]
}
}
关于inputs
关键字,考虑阅读JQ's docs on this part。