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

如何使用DataWeave 2.0转换含重复Part/Labor键的JSON数组结构

前置配置

由于输入JSON存在平级重复的Labor键,默认JSON解析器会覆盖后出现的同键值,导致数据丢失。需要先调整Mule应用中JSON读取器的配置,将duplicateKeyHandling属性设置为ARRAY,这样重复键的值会被解析为数组完整保存。

DataWeave 2.0 转换代码

%dw 2.0
output application/json
---
payload flatMap (lineItem) -> 
    lineItem pluck ((value, key) -> 
        if (key == "Part" or key == "Labor") (
            (if (value is Array) value else [value]) map (entry) -> {
                LineDescription: lineItem.LineDescription,
                LaborOrPart: key,
                (entry)
            }
        ) else []
    )

逻辑说明

  • 用flatMap遍历原始数组的每一行条目,将拆分生成的多个子对象自动铺平为一维输出数组
  • 用pluck提取单个行条目内的所有键值对,仅筛选Part和Labor两类键做后续处理
  • 兼容重复键解析生成的数组格式:无论对应值是单个对象还是重复键生成的数组,都统一转为数组遍历
  • 每个子项生成目标结构时,自动携带上层公共的LineDescription字段、标记条目类型,再展开Part/Labor的内部字段,完全匹配目标结构要求。

内容的提问来源于stack exchange,提问作者user1905307

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:06:03