You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:30:49