gpt4 book ai didi

arrays - 当数组名称未知时,将数组分组并将它们移动到新对象下

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

我有以下 JSON

[
{
"name": "T1",
"R10": ["A","B"]
},
{
"name": "T1",
"M20": ["C"]
},
{
"name": "A1",
"C20": ["A","B"]
},
{
"name": "B1",
"V30": ["3"]
},
{
"name": "C1",
"X50": ["1"]
}
]
我想根据 "name" 对数组进行分组并将它们推到新的 "Arrays" 下目的。所以结果应该如下所示:
[
{
"name": "T1",
"Arrays": {
"R10": ["A","B"],
"M20": ["C"]
}
},
{
"name": "A1",
"Arrays": {
"C20": ["A","B"]
}
},
{
"name": "B1",
"Arrays": {
"V30": ["3"]
}
},
{
"name": "C1",
"Arrays": {
"X50": ["1"]
}
}
]
我可以根据 "name" 的值进行选择 [.[] | select ( .name | test("T1") )] | add - 它确实将数组组合在一起,但我无法弄清楚如何概括过滤器 - 将其应用于整个 JSON 而不是基于名称进行过滤。
我也被困在如何在 "Arrays" 下推送数组对象,如果我事先不知道数组的名称。

最佳答案

这肯定需要group_by/1.name字段,然后根据需要重新排序对象。

[ group_by(.name)[] | add ] | map( { name: .name, Arrays: del(.name) } )
由于 group-by 函数对应用的字段进行内部排序,即 .name在您的情况下,最终结果的键顺序由 .name 的升序决定 field 。
Demo - jqplay

关于arrays - 当数组名称未知时,将数组分组并将它们移动到新对象下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63922373/

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