如何在MuleSoft DataWeave中过滤符合指定条件的嵌套数组?
MuleSoft中过滤JSON数组元素的解决方案
需求说明
从给定的JSON payload中,筛选出offers数组下所有category.characters数组里满足name为WBB且priority为1的元素,最终得到单个符合条件的对象。
原始Payload
{ "status": "Success", "offers": [ { "id": 100, "name": "Test1", "category": { "characters": [ { "name": "WBB", "priority": 1 }, { "name": "ILL", "priority": 2 } ] } }, { "id": 200, "name": "Test2", "category": { "characters": [ { "name": "WLS", "priority": 1 }, { "name": "DLL", "priority": 2 } ] } }, { "id": 300, "name": "Test3", "category": { "characters": [ { "name": "INTERNET", "priority": 1 }, { "name": "FIBER", "priority": 2 } ] } } ] }
预期输出
{ "name": "WBB", "priority": 1 }
解决方案(DataWeave 2.0)
在MuleSoft的Transform Message组件中使用以下DataWeave代码:
%dw 2.0 output application/json --- flatten(payload.offers.category.characters) filter ($.name == "WBB" and $.priority == 1) [0]
代码解释
flatten(payload.offers.category.characters):将所有offer下嵌套的characters数组展开成一维数组,简化遍历逻辑filter ($.name == "WBB" and $.priority == 1):筛选出同时满足两个条件的元素[0]:取第一个匹配的元素,确保输出为单个对象(若存在多个匹配项,可移除[0]返回匹配元素数组)
内容的提问来源于stack exchange,提问作者Krish
相关产品推荐
相关产品推荐

