dataweave - 使用 dataweave 匹配 mule 4 中的数组值
问题描述
我正在尝试使用 dataweave 匹配来自输入有效负载的特定值。
输入:
{
"drives": [{
"id": "0AEzOyzyCb7Uk9PVA",
"name": "SFJob-2020-10"
}, {
"id": "0AMEHi1wsq-8FUk9PVA",
"name": "SFJobs-2020-11"
} ],
"nextPageToken": "~!!~AI9FV7RV4uSXy20zpCBTP2LFWCXS0c"
},
{
"drives": [{
"id": "0AEz3mOyzyCb7Uk9PVA",
"name": "Dev2020-10"
}, {
"id": "0AMEHi1wsq-8FUk9PVA",
"name": "Dev2020-11"
}],
"nextPageToken": "~!!~AI9P2LFWCXS0c"
}
我如何检查值“Dev2020-10”是否存在。
我正在使用下面的代码给我错误。
%dw 2.0
output application/json
---
payload.drives filter ((item, index) -> item.name == 'Dev2020-10')
预期输出:
[ {
"id": "0AEz3mOyzyCb7Uk9PVA",
"name": "Dev2020-10"
}]
我怎样才能做到这一点?
解决方案
解决方案可以考虑两个步骤:
- 将所有驱动器合并在一起以获得单个对象数组
flatten(inputArray.drives)
- 根据搜索条件过滤新的对象数组
filter ((item, index) -> item.name == "Dev2020-11")
解决方案是这样的:
%dw 2.0
output application/json
var inputArray = [
{
"drives": [{
"id": "0AEzOyzyCb7Uk9PVA",
"name": "SFJob-2020-10"
}, {
"id": "0AMEHi1wsq-8FUk9PVA",
"name": "SFJobs-2020-11"
} ],
"nextPageToken": "~!!~AI9FV7RV4uSXy20zpCBTP2LFWCXS0c"
},
{
"drives": [{
"id": "0AEz3mOyzyCb7Uk9PVA",
"name": "Dev2020-10"
}, {
"id": "0AMEHi1wsq-8FUk9PVA",
"name": "Dev2020-11"
}],
"nextPageToken": "~!!~AI9P2LFWCXS0c"
}
]
---
flatten(inputArray.drives) filter ((item, index) -> item.name == "Dev2020-11")
要了解有关 flatten 方法的更多信息,请参阅文档:mule 4 doc
推荐阅读
- spring-logback - 如何为 logback 填充自定义字段值?
- c# - Application.Run 在新桌面上执行但不运行表单
- android - Kotlin和Android中内部类的作用是什么
- python - 在 GNU Octave 中执行 Python 文件
- swift - 如何访问 SpriteKit GameScene 中的事件和元素?
- google-cloud-platform - 我在哪里可以找到 GCP 控制台中所有 Cloud Functions 每月的总调用次数?
- jquery - autocomplete="off" 在 Microsoft Edge 版本 87.0.664.57 中不起作用
- javascript - 有没有办法在 Plotly 中获取点击点的“customdata”属性?
- asp.net-mvc - 位置路径=""拒绝用户="?" 阻止访问域根目录 ("/") 而不是显示 RouteConfig 默认值
- typescript - 打字稿中不同类型的函数抛出错误