问题描述
我有以下输入
{
"error1": [
{
"store": "1201","DocumentNumber": "FF15974433790786634518"
},{
"store": "1201","DocumentNumber": "FF15974433790786634519"
},"DocumentNumber": "FF15974433790786634520"
},{
"store": "1202","DocumentNumber": "FF15974433790786634520"
}
],"error2": [
{
"store": "1201","DocumentNumber": "FF15974433790786634518"
}],error3:[]
}
我想导出以下结果
{
"error1": [{
"store": "1201","DocumentNumber": ["FF15974433790786634518","FF15974433790786634519","FF15974433790786634520"]
},{
"store": "1202","DocumentNumber": ["FF15974433790786634520"]
}
],"error2": [{
"store": "1201","DocumentNumber": ["FF15974433790786634518"]
}]
}
解决方法
试试这个:
输入:
{
"error1": [
{
"store": "1201","DocumentNumber": "FF15974433790786634518"
},{
"store": "1201","DocumentNumber": "FF15974433790786634519"
},"DocumentNumber": "FF15974433790786634520"
},{
"store": "1202","DocumentNumber": "FF15974433790786634520"
}
],"error2": [
{
"store": "1201","DocumentNumber": "FF15974433790786634518"
}],"error3":[]
}
脚本:
%dw 2.0
output application/json
---
payload filterObject ($ !=[]) mapObject {
($$) : $ groupBy $.store mapObject {
temp:{
store: $.store[0],DocumentNumber: $.DocumentNumber
}} pluck($)
}
输出:
{
"error1": [
{
"store": "1201","DocumentNumber": [
"FF15974433790786634518","FF15974433790786634519","FF15974433790786634520"
]
},"DocumentNumber": [
"FF15974433790786634520"
]
}
],"DocumentNumber": [
"FF15974433790786634518"
]
}
]
}
,
试试下面的脚本
%dw 2.0
output application/json
---
(payload filterObject ($ != [])) mapObject ((value,key,index) -> {
(key): (value groupBy $.store) pluck ((iValue,iKey) -> {
store: (iKey),DocumentNumber: iValue.DocumentNumber
})
})