Mule 3转Mule 4 DataWeave 2.0表达式迁移求助
Mule 3 到 Mule 4 DataWeave 表达式迁移修复方案
错误1:表达式缺失修复
原代码末尾缺少闭合的 } 和 ),导致语法不完整,需补充完整结构。
错误2:using() 废弃替换
Mule 4 中 using() 语法已被废弃,需替换为 do 块来定义局部变量。
错误3:splitBy 参数与空值处理
- Mule 4 的
splitBy支持字符串或正则表达式作为分隔符,直接使用"\n"即可(也可显式写成正则/\n/)。 - 必须处理
payload为null的情况,避免空指针异常,可通过default ""为空 payload 设置默认空字符串。 - 原代码中数组切片写法
$[[startIndex][0] .. [lastIndex][0]]可简化为 DataWeave 2.x 规范的$[startIndex to lastIndex]。
修正后的完整表达式
%dw 2.0 output application/json --- (payload default "") splitBy "\n" map (line) -> do { var startIndex = 41 var lastIndex = sizeOf(line) - 1 --- { "Data": if(lastIndex >= startIndex) line[startIndex to lastIndex] else "" } }
补充说明:新增 if(lastIndex >= startIndex) 判断,避免当行长度不足42位时出现切片索引越界问题,提升表达式健壮性。
内容的提问来源于stack exchange,提问作者Saksham_Nishu
相关产品推荐
相关产品推荐

