【问题标题】:Filtering vales in Dataweave在 Dataweave 中过滤值
【发布时间】:2020-11-18 07:52:28
【问题描述】:

我正在尝试使用 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: 字符串 ("{"drives":[{"id":"0AEBByqXZ0xb4Uk9PVA","name":"QA-zz-SFJobs-Contact...) 2:名称(“驱动器”)

但它需要以下组合之一: (数组,名称) (数组,字符串) (日期,姓名) (日期时间,名称) (本地日期时间,名称) (本地时间,名称) (对象,名称) (对象,字符串) (期间,姓名) (时间、姓名)

5|驱动器:payload.result.drives[0] filter ((item, index) -> item.name == vars.folderName) ^^^^^^^^^^^^^^^^^^^^^ 痕迹: 在过滤器处(行:5,列:13) 在 main(第 5 行,第 38 列)”评估表达式:“%dw 2.0 输出应用程序/json

{ 驱动器:payload.result.drives[0] filter ((item, index) -> item.name == vars.folderName) }”。

预期输出:

{ "id": "0AC_FdkeL63mHUk9PVA", “名称”:“质量保证” }

我怎样才能做到这一点?

【问题讨论】:

标签: filtering matching dataweave mule4


【解决方案1】:

输入应该是有效的“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"
  }
}

这是一个包含对象的单个对象,因此不能应用过滤方法,因为过滤器适用于数组和对象数组。

要试用您的数据编织代码 sn-p,您可以使用在线数据编织编辑器: Online Dataweave Editor 这可以为您提供更好的见解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    相关资源
    最近更新 更多