报错:未定义变量'substring',DW 0.1日期格式转换求助
解决DataWeave 0.1中substring报错的问题
我来帮你排查下问题根源,你的代码有两个关键错误导致了这个报错:
1. 变量定义方式不符合DataWeave 0.1语法
你不能直接在对象内部用var:payload.po.ordered_date这种形式定义变量。在DataWeave 0.1里,需要用%var指令在脚本顶部声明变量,或者在表达式作用域内使用let来临时定义。
2. substring的调用方式错误
DataWeave 0.1没有全局的substring()函数,字符串截取需要调用字符串对象的.substring()方法(类似Java的用法)。另外你原代码里的参数也不对,要得到20170822的格式,需要调整截取的索引或者换更简洁的处理方式。
修正后的代码示例
下面提供两种实现方式,你可以按需选择:
方式一:用substring拼接年月日
%dw 0.1 %output application/xml %var orderedDate = payload.po.ordered_date --- po: { originalDate: orderedDate, formattedDate: orderedDate.substring(0,4) ++ orderedDate.substring(5,7) ++ orderedDate.substring(8,10) }
方式二:截取前10位后替换横杠(更简洁)
%dw 0.1 %output application/xml %var orderedDate = payload.po.ordered_date --- po: { originalDate: orderedDate, formattedDate: orderedDate.substring(0,10) replace "-" with "" }
代码说明
- 用
%var在顶部声明orderedDate变量,存储原始的时间字符串。 - 方式一中,通过
.substring(startIndex, endIndex)分别提取年、月、日的部分,再用++拼接成无横杠的格式。 - 方式二中,先截取前10位得到
2017-08-22,再用replace方法把所有横杠替换为空,一步得到目标格式。
这样修改后,就不会再出现"There is no variable named 'substring'"的错误了。
内容的提问来源于stack exchange,提问作者Bavya Rajendran
相关产品推荐
相关产品推荐

