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

如何使用MuleSoft DataWeave解析JSON内嵌字符串并转换为目标XML

DataWeave JSON转XML转换实现

核心处理规则

  • 除DEPENDENTDETAILS外的常规字段:节点名统一转小写,字符串类型值转全小写,数值类型值直接保留
  • DEPENDENTDETAILS字段解析逻辑:
    • 先按分号拆分字符串片段,自动过滤空片段、分隔符前后多余空格
    • 拆分后首段为字段名集合,后续每段为单条依赖人员明细
    • 明细字段中序号、名、姓三个字段的节点名和值统一转小写,出生日期、教育状态、收入字段保留原字段名大小写、原值输出
    • 所有明细节点统一包裹在dependentdetails父节点下

完整DataWeave 2.x代码(适配Mule 4.x版本)

%dw 2.0
output xml writeDeclaration=false, indent=true
---
sponsors: payload.sponsors map ((sponsorItem) -> {
    // 映射常规字段
    (sponsorItem filterObject ((val, key) -> key as String != "DEPENDENTDETAILS") 
        mapObject ((val, key) -> {
            (lower(key as String)): if (val is String) lower(val) else val
        })
    ),
    // 解析结构化的DEPENDENTDETAILS字符串
    dependentdetails: do {
        var splitSegments = sponsorItem.DEPENDENTDETAILS splitBy /\s*;\s*/ filter ($ != "")
        var fieldList = splitSegments[0] splitBy /\s*,\s*/
        var detailList = splitSegments[1 to -1]
        ---
        detailList flatMap ((singleDetail) -> {
            var detailValues = singleDetail splitBy /\s*,\s*/
            ---
            fieldList map ((fieldName, index) -> {
                (if (index < 3) lower(fieldName) else fieldName): 
                    if (index <3) lower(detailValues[index]) else detailValues[index]
            })
        })
    }
})

注意事项

原示例输出的EduStatus节点存在标签闭合笔误(误写为自闭合标签),上述代码会输出符合XML规范的标准闭合标签,同时兼容分隔符前后带任意空格的非标准输入格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:21:28