dataweave中的子滤波器逻辑处理

时间:2018-09-13 10:10:00

标签: mule dataweave

我有一个Json负载,即

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

我正在打一个http呼叫,以获取DB中存在的所有客户的记录收集,即

{
    "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"
        }
    ]
}

现在,我要过滤并提取我在ID字段中的“请求有效负载”中获取的那些ID的数据,并在收集响应有效负载中将它们匹配。

ID字段在请求有效负载和响应有效负载中都是常见的

请帮助我。

1 个答案:

答案 0 :(得分:0)

让我们假设您将第一个有效负载存储在名为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)