【发布时间】:2022-03-14 18:49:32
【问题描述】:
我想将两个或多个文件聚合成一个 json,并在同一个键下聚合数组。
file1.json
{
"shapes": [
{
"id": "1",
"name": "circle"
},
{
"id": "2",
"name": "square"
}
]
}
file2.json
{
"shapes": [
{
"id": "3",
"name": "triangle"
}
]
}
预期结果:
{
"shapes": [
{
"id": "1",
"name": "circle"
},
{
"id": "2",
"name": "square"
},
{
"id": "3",
"name": "triangle"
}
]
}
我可以使用以下 jq 命令来做到这一点:
jq -s '{shapes: map(.shapes)|add }' file*.json
但这需要我知道 shapes 属性并对其进行硬编码。有没有一种简单的方法可以在不显式使用键名的情况下获得相同的结果?
【问题讨论】:
-
如果一个或多个文件中的顶级对象有多个键怎么办?
-
我正在处理一个只有一个键的 api 响应。所以它不会影响这种情况,但对于一般情况,所有未命名为 shapes 的键都会被有效地丢弃,这可能是我想要的,也可能不是。