请在下面的数据编织中提供帮助这里是输入
[
{
"item": "1",
"quantity": "100",
"code":"ABC"
},
{
"item": "1",
"quantity": "200",
"code":"ABC"
},
{
"item": "1",
"quantity": "200",
"code":"CDB"
},
{
"item": "12",
"quantity": "200",
"code":"ABC"
}
]
这是预期的输出
[
{
"item": "1",
"quantity": "300"
"code":"ABC"
},
{
"item": "1",
"quantity": "200"
"code":"CDB"
},
{
"item": "12",
"quantity": "200"
"code":"ABC"
}
]
基于匹配的键和值,必须对dataweave中的对象数组进行添加
尝试这样的事情。
%dw 2.0
output application/json
---
(payload groupBy (key,index) ->(key.item ++ key.code)) mapObject {
a: {
item: $[0].item,
quantity: (if (sizeOf ($) > 1) ($.quantity reduce ($$ as Number
{format: '#'} + $ as Number {format: '#'})) else $.quantity[0]
as Number {format: "#"}),
code:$[0].code
}
}
添加摘录而不是那个mapObject ..类似的东西
%dw 2.0
output application/json
---
(payload groupBy (key,index) ->(key.item ++ key.code)) pluck {
a: {
item: $[0].item,
quantity: (if (sizeOf ($) > 1) ($.quantity reduce ($$ as Number
{format: '#'} + $ as Number {format: '#'})) else $.quantity[0]
as Number {format: "#"}),
code:$[0].code
}
}
尝试一下:
%dw 2.0
output application/json
var data = [
{
"item": "1",
"quantity": "100",
"code":"ABC"
},
{
"item": "1",
"quantity": "200",
"code":"ABC"
},
{
"item": "1",
"quantity": "200",
"code":"CDB"
},
{
"item": "12",
"quantity": "200",
"code":"ABC"
}
]
---
data groupBy ($.code ++ $.item)
pluck $
reduce (e,acc=[]) -> acc + {
item: e[0].item,
code: e[0].code,
quantity: sum(e.*quantity) as String
}