dataweave - 仅在 DataWeave 2.0/Mule 4 中映射值
问题描述
我是 Mule 4 的新手,我一直在试图弄清楚如何只映射数组中的值。我的数组是:
[
{
"ssn": "999999991",
"contributionCode": "1",
"amt": -100.000000
},
{
"ssn": "999999991",
"contributionCode": "2",
"amt": 1200.000000
}
]
我需要做的是通过contributionCode 和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]
选择你喜欢的那个。
推荐阅读
- java - OpenJDK 或 Oracle JDK 上的方法跟踪
- python - 如何从另一个类 python 正确访问类函数
- linux - 比较文件之间的值
- java - 如何在同一项目的其他类中使用公共类报告(用于记录目的)和公共静态方法
- c# - 如何在 Unity 中旋转 Vector3
- react-native - 带有 React Native 的 ClojureScript - 文件下载
- r - 使用 layout() 时 ploty r 无法绘图
- xml - 是否可以运行一个 build.xml 文件,该文件又执行另一个 build.xml 文件
- sapui5 - 无法在 sapui5 中使用 splitcontainer 在详细页面中显示数据?
- karabiner - 如何在 Karabiner-Elements 中创建重新映射插入键到 command+option+I