gpt4 book ai didi

json - 使用jq从多个文件聚合json数组,按键分组

转载 作者:行者123 更新时间:2023-12-04 15:21:14 25 4
gpt4 key购买 nike

我想将两个或多个文件聚合到一个 json 中,并在同一个键下聚合数组。

文件1.json

{
"shapes": [
{
"id": "1",
"name": "circle"
},
{
"id": "2",
"name": "square"
}
]
}

文件2.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 属性并对其进行硬编码。有没有一种简单的方法可以在不显式使用键名的情况下获得相同的结果?

最佳答案

这是一种适用于每个顶级对象只有一个键的解决方案,它既高效又概念简单。它假定使用 -n 选项调用 jq。

reduce inputs as $in (null;
($in|keys_unsorted[0]) as $k | { ($k): (.[$k] + $in[$k]) })

或者更简洁一点:

reduce inputs as $in (null; ($in|keys_unsorted[0]) as $k | .[$k] += $in[$k] )

关于json - 使用jq从多个文件聚合json数组,按键分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63264954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com