如何转换数据编织中的子项目
how to transform children items in dataweave
我有以下输入
{
"error1": [
{
"store": "1201",
"DocumentNumber": "FF15974433790786634518"
},
{
"store": "1201",
"DocumentNumber": "FF15974433790786634519"
},
{
"store": "1201",
"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"
},
{
"store": "1201",
"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"
]
},
{
"store": "1202",
"DocumentNumber": [
"FF15974433790786634520"
]
}
],
"error2": [
{
"store": "1201",
"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
})
})
我有以下输入
{
"error1": [
{
"store": "1201",
"DocumentNumber": "FF15974433790786634518"
},
{
"store": "1201",
"DocumentNumber": "FF15974433790786634519"
},
{
"store": "1201",
"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"
},
{
"store": "1201",
"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"
]
},
{
"store": "1202",
"DocumentNumber": [
"FF15974433790786634520"
]
}
],
"error2": [
{
"store": "1201",
"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
})
})