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

如何使用DataWeave 1.0与2.0遍历字符串并完成数组转换?

解决方案:DataWeave 1.0(Mule 3)和2.0(Mule 4)实现分隔字符串转数组

DataWeave 2.0(Mule 4)实现

你原来的代码有三处问题:用map遍历原payload会保留嵌套数组结构、字段名写成了sur而非期望的card、外层键名大小写与目标不符。改用flatMap扁平化数组,修正字段名和键名后即可得到期望输出:

%dw 2.0
output application/json
---
{
    cardList: payload flatMap (data) -> 
        data.card splitBy "||" map (item) -> {
            card: item
        }
}

代码说明

  • flatMap:遍历原payload数组的每个元素,同时将每个元素分割后的子数组展开,避免产生嵌套结构
  • splitBy "||":将每个card字段的字符串按||分割为子数组
  • map (item) -> {card: item}:把分割后的每个字符串包装成指定结构的对象

DataWeave 1.0(Mule 3)实现

DataWeave 1.0语法与2.0差异较大,需调整函数调用方式和输出声明:

%output application/json
---
{
    cardList: flatten(payload map (data) -> 
        splitBy(data.card, "||") map (item) -> {
            card: item
        }
    )
}

代码说明

  • %output application/json:DW1.0的输出格式声明写法
  • flatten:DW1.0没有flatMap,先通过map生成嵌套数组,再用flatten扁平化处理
  • splitBy(data.card, "||"):DW1.0中splitBy为前缀式调用,参数顺序为(目标字符串,分隔符)

测试后上述代码均可输出你需要的JSON结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:10:29