使用 JSONata 按属性值分组

问题描述 投票:0回答:1

我想使用 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"
    }
  ]
}
grouping jsonata
1个回答
0
投票

怎么样:

${group: {month: value}}

这按

group
值对初始数组进行分组。然后,每个组的结果数组依次按月分组。

有趣的是,JSONata 知道现在每组只有一个项目,并隐式选择正确的聚合函数,该函数只是返回该项目。

© www.soinside.com 2019 - 2024. All rights reserved.