首页 > 解决方案 > dataweave 中的 mule 过滤器逻辑处理

问题描述

我有一个 Json 有效载荷,即

{
    "Numbers": [
        0
    ],
    "title": "string",
    "Ids": [
        0, 1, 2
    ],
    "group": 0
}

我正在打一个http调用来收集数据库中所有客户的记录,即

{
    "details": [{
            "detailId": 0,
            "Id": 0,
            "name": "string",
            "place": "string",
            "country": "string",
            "bloodgroup": "string",
            "area": "string"
        },
        {
            "detailId": 0,
            "Id": 1,
            "name": "string",
            "place": "string",
            "country": "string",
            "bloodgroup": "string",
            "area": "string"
        }
    ]
}

现在,我想过滤和提取那些在 Ids 字段中的 Request payload 中获得的 Id 的数据,并在集合响应有效负载中匹配它们。

ID 字段在请求负载和响应负载中很常见

请帮助我。

标签: muledataweave

解决方案


假设您将第一个有效负载存储在一个名为flowVars.ids. 您想使用该contains方法,true如果您要检查的值包含在数组中,则该方法有效,否则返回false. 这里有几个例子:

// Returns true
[1,2,3,4,5] contains 5

// Returns false
[1,2,3,4,5] contains "Hello"

所以你可以filter像这样构建你的结构(假设 Mule 3.x 和 DataWeave 1.0):

%dw 1.0
%output application/java

%var ids = flowVars.ids.Ids
---
payload.details filter (ids contains $.Id)

推荐阅读