filtering - 在 Dataweave 中过滤值
问题描述
我正在尝试使用 dataweave 过滤掉与变量匹配的值。
result = {
"drives": [{
"id": "0AEBByqXZ0xb4Uk9PVA",
"name": "QA-zz-SFJobs-Contacts"
}, {
"id": "0AC_FdkeL63mHUk9PVA",
"name": "QA"
}]
}
以上是我的有效载荷。
我正在尝试下面的代码
%dw 2.0
output application/json
---
{
drives: payload.result.drives[0] filter ((item, index) -> item.name == "QA")
}
这给了我错误
错误:
您使用以下参数调用了函数“值选择器”: 1:String ("{"drives":[{"id":"0AEBByqXZ0xb4Uk9PVA","name":"QA-zz-SFJobs-Contact...) 2:名称(“驱动器”)
但它需要以下组合之一: (Array, Name) (Array, String) (Date, Name) (DateTime, Name) (LocalDateTime, Name) (LocalTime, Name) (Object, Name) (Object, String) (Period , 姓名) (时间, 姓名)
5| 驱动器:payload.result.drives[0] filter ((item, index) -> item.name == vars.folderName) ^^^^^^^^^^^^^^^^^^^^ Trace :在过滤器(行:5,列:13)在主(行:5,列:38)”评估表达式:“%dw 2.0输出应用程序/ json
{驱动器:payload.result.drives [0]过滤器((项目,索引)-> item.name == vars.folderName)}“。
预期输出:
{“id”:“0AC_FdkeL63mHUk9PVA”,“名称”:“QA”}
我怎样才能做到这一点?
解决方案
输入应该是有效的“JSON”,例如:
{
"result": {
"drives": [{
"id": "0AEBByqXZ0xb4Uk9PVA",
"name": "QA-zz-SFJobs-Contacts"
},
{
"id": "0AC_FdkeL63mHUk9PVA",
"name": "QA"
}]
}
}
这里应用上面的逻辑:
{
drives: payload.result.drives[0]
}
返回输出为:
{
"drives": {
"id": "0AEBByqXZ0xb4Uk9PVA",
"name": "QA-zz-SFJobs-Contacts"
}
}
这是包含对象的单个对象,因此不能应用过滤器方法,因为过滤器适用于数组和对象数组。
要尝试您的数据编织代码片段,您可以使用在线数据编织编辑器: 在线数据编织编辑器 ,它可以为您提供更好的见解。
推荐阅读
- android - 从可绘制文件夹中动态设置 ImageView
- r - R代码每次为循环中的方程产生不同的输出
- c++ - run() 如何在 TensorFlow C++ 中工作
- python - 如何对 input() 函数中显示的文本应用着色/格式(类似于打印语句格式)?
- vbscript - 从注册表中删除程序
- javascript - chart.js - 如何将图形线延伸到画布边缘(图片)
- python - 如何获取 SOM(Self Organizing Maps)中的重要特征?
- python - 在函数中使用可选参数来反转范围 python 3
- node.js - Express Route 的高阶函数
- python - 网页抓取:使用 python 从 html 中的 xpath 中提取 url:airbnb 列表