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

Mule中如何按payload1字段顺序匹配payload2对应值输出指定结构

Mule 字段顺序匹配转换实现方案

在Mule中可直接通过内置的DataWeave 2.0转换脚本实现需求,无需引入额外组件。

实现逻辑

  • 先将CSV读取的表头字符串拆分为数组,完整保留原始表头的名称和排序
  • 对入站载荷的每个对象预处理生成查找映射:将对象的键统一处理为「全小写+去除所有空格」格式,值保留原始值
  • 遍历表头数组,严格按照表头顺序生成输出对象,从预处理的查找映射中匹配对应值,匹配不到可返回自定义默认值

完整DataWeave脚本

假设CSV表头存放在变量vars.csvHeaders、入站对象数组存放在变量vars.inputPayload,你可以根据实际存储位置调整变量引用:

%dw 2.0
output application/json
// 拆分CSV表头为数组,保留原始名称与顺序
var headerList = vars.csvHeaders splitBy ","
---
vars.inputPayload map (rowItem) -> do {
    // 预处理当前行对象为查找表:key为小写无空格格式,方便匹配
    var lookupMap = rowItem mapObject ((value, key) -> 
        (lower(replace((key as String), " ", ""))): value
    )
    // 按照表头顺序生成输出对象
    headerList reduce (header, result={}) -> result ++ {
        (header): lookupMap[lower(replace(header, " ", ""))] default ""
    }
}

脚本说明

  1. 示例中default ""表示匹配不到字段时默认返回空字符串,你可以根据业务需求修改为default null或其他默认值
  2. 如果CSV表头存在首尾空格的情况,可将匹配逻辑修改为lower(replace(trim(header), " ", ""))自动去除首尾空格,提升兼容性
  3. 该脚本天然支持入站载荷为多对象的场景,输出会保持和入站相同的数组长度

使用上述脚本转换你提供的示例输入,即可得到完全符合要求的输出结果。

内容的提问来源于stack exchange,提问作者Mule-Newbie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:57:00