我想使用 JSONata 将 JSON 响应重新格式化为按对象中的值分组的不同结构。 我搜索了 StackOverflow,但找不到符合我需求的示例。 我想把这个:
[
{
"group": "a",
"month": "01",
"value": "10"
},
{
"group": "a",
"month": "02",
"value": "20"
},
{
"group": "b",
"month": "01",
"value": "30"
},
{
"group": "b",
"month": "02",
"value": "40"
}
]
进入这个
{
"a": {
"01": "10",
"02": "20"
},
"b": {
"01": "30",
"02", "40"
}
}
团体价值观和月份会随着时间的推移而变化,因此它需要是动态的。 有人可以帮忙吗?
更新: 这是我到目前为止所尝试过的,这让我很接近,但不是我正在寻找的确切结构:
${
$string(group): $.({
month: $.value
})
}
结果分组正确,但月份位于数组而不是对象中:
{
"a": [
{
"01": "10"
},
{
"02": "20"
}
],
"b": [
{
"01": "30"
},
{
"02": "40"
}
]
}
怎么样:
${group: {month: value}}
这按
group
值对初始数组进行分组。然后,每个组的结果数组依次按月分组。
有趣的是,JSONata 知道现在每组只有一个项目,并隐式选择正确的聚合函数,该函数只是返回该项目。