我对Mule 4还是有点菜鸟,一直在试图弄清楚如何仅映射数组中的值。我的数组是:
[
{
"ssn": "999999991",
"contributionCode": "1",
"amt": -100.000000
},
{
"ssn": "999999991",
"contributionCode": "2",
"amt": 1200.000000
}
]
我需要做的是通过贡献代码和ssn过滤数组,并仅返回金额值。我已经尝试过了它及其变种,但我只得到错误:
vars.sumAmounts filter ($.ssn == '999999991' and $.contributionCode == '1' ) map -> ({$.amt})
所以我想从上面获得的输出仅为-100.000000。预先抱歉,如果这似乎是一个基本问题,但是非常感谢任何人的帮助。
@ Tek_Datt,这是您可以使用的两种方式,这完全取决于您是否要一遍又一遍地进行。
这是您使用filter
功能进行搜索的方法:
%dw 2.0
output application/dw
var data = [
{
"ssn": "999999991",
"contributionCode": "1",
"amt": -100.000000
},
{
"ssn": "999999991",
"contributionCode": "2",
"amt": 1200.000000
}
]
---
(data filter ($.ssn == "999999991" and $.contributionCode ~= 1)).amt[0]
如果要在每个转换中运行多个此类搜索,则下一个性能更高:
%dw 2.0
output application/dw
var data = [
{
"ssn": "999999991",
"contributionCode": "1",
"amt": -100.000000
},
{
"ssn": "999999991",
"contributionCode": "2",
"amt": 1200.000000
}
] groupBy ($.ssn ++ "_" ++ $.contributionCode)
---
data["999999991_1"].amt[0]
选择您喜欢的一个。