如何使用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
相关产品推荐
相关产品推荐

