问题描述
我有以下输入数据
[
{
"key": "a","value": [
"1"
]
},{
"key": "a","value": [
"2"
]
},{
"key": "b","value": [
"3"
]
}
]
并希望将这些值合并到一个数组中,并按相同的键分组。即以下所需的输出:
[
{
"key": "a","value": [
"1","2"
]
},"value": [
"3"
]
}
]
感谢您的帮助!
解决方法
一种选择是使用 groupBy
,然后像这样容纳您获得的组:
valuesOf(payload groupBy ((item,index) -> item.key))
map ((group,index) -> {
"key": group[0].key,"value": flatten(group.value)
})
这将产生您共享的输出。
,类似的方法。函数的用法有点不同。
%dw 2.0
output application/json
---
payload groupBy ($."key") mapObject {
"key": $[0].key,"value": $ map {
temp: $.value[0]
}.temp
}