MuleSoft 按另一个 json 数组列表中的键过滤 json 数组



在MuleSoft/DataWeave中,我有一个json数组,需要根据另一个json列表中的键值进行筛选。这是我需要过滤的json:

[
{
"order_by": "CDDASD",
"product_no": "69843270432",
"serial_number": "CD909837296",
"place_of_origin": "SFG",
"depot": "LK955",
"quantity": "150"
},
{
"order_by": "CDDPOI",
"product_no": "74890327033",
"serial_number": "CD909837297",
"place_of_origin": "SVH",
"depot": "MN822",
"quantity": "900"
},
{
"order_by": "CDDUYT",
"product_no": "43720943334",
"serial_number": "CD909837298",
"place_of_origin": "SRF",
"depot": "BV675",
"quantity": "1200"
}
]

当我进行API调用时,我发送以下json

{
"FORMAT": [
"order_by",
"product_no",
"serial_number"
]
}

我希望响应只返回第一个json中与FORMAT中指定的任何键匹配的键/值对。因此,对于以上内容,我预计会有这样的回应:

[
{
"order_by": "CDDASD",
"product_no": "69843270432",
"serial_number": "CD909837296"
},
{
"order_by": "CDDPOI",
"product_no": "74890327033",
"serial_number": "CD909837297"
},
{
"order_by": "CDDUYT",
"product_no": "43720943334",
"serial_number": "CD909837298"
}
]

我在遍历FORMAT中的值,然后用这些值过滤第一个json时遇到了问题。我甚至不确定我应该在DataWeave中使用什么函数。我应该在FORMAT上使用map,然后在第一个json上进行过滤吗?当一个对象被期望时,我总是在使用数组时出错,所以我不知所措。很抱歉缺少代码,我太困惑了,不知道该做什么。我感谢大家的帮助。

假设您的有效负载始终是您提供的(而不是嵌套结构(,那么您可以使用Map函数迭代有效负载,然后使用filterObject来实现您想要的输出

%dw 2.0
output application/json
var fields = {
"FORMAT": [
"order_by",
"product_no",
"serial_number"
]
}
---
payload map ((item) -> 
item filterObject ((value, key) ->
fields.FORMAT contains  (key as String) ))

最新更新