首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dataweave匹配mule 4中的数组值

使用dataweave匹配mule 4中的数组值
EN

Stack Overflow用户
提问于 2020-11-11 17:57:01
回答 2查看 729关注 0票数 0

我正在尝试使用dataweave匹配输入有效负载中的特定值。

输入:

代码语言:javascript
复制
{
    "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的值是否存在。

我正在使用下面的代码给我错误。

代码语言:javascript
复制
%dw 2.0
output application/json
---
payload.drives filter ((item, index) -> item.name == 'Dev2020-10')

预期输出:

[{

代码语言:javascript
复制
"id": "0AEz3mOyzyCb7Uk9PVA",
"name": "Dev2020-10"

}]

我如何才能做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2020-11-11 20:44:36

首先,输入无效。我假设它是一个JSON数组,所以我将其括在括号中:[ {..},{..} ]

之后,您将注意到过滤器需要一个单独的对象,但因为它是一个数组,所以您需要首先映射它。为了返回单个数组,我使用了flatMap():

代码语言:javascript
复制
%dw 2.0
output application/json
---
payload flatMap $.drives filter ((item, index) -> item.name == 'Dev2020-10')

输出:

代码语言:javascript
复制
[
  {
    "id": "0AEz3mOyzyCb7Uk9PVA",
    "name": "Dev2020-10"
  }
]
票数 1
EN

Stack Overflow用户

发布于 2020-11-18 17:14:42

解决方案可以认为是两个步骤:

根据搜索条件filter ((item, index) -> item.name == "Dev2020-11")

  1. 将所有驱动器合并在一起,以获得单个对象阵列和新的对象阵列

解决方案是:

代码语言:javascript
复制
%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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64784201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档