DataWeave函数传入Null输入报语法错误,请求原因分析
问题排查:DataWeave函数传入Null触发语法错误
问题原因
你定义的convertToISO函数参数声明为String类型,但DataWeave对参数类型有严格约束——null不属于String类型范畴,当你传入null时,会直接触发类型不匹配的语法错误,函数内部的dateString == null判断根本不会被执行。
修复方案
有两种常用方式解决这个问题:
方案1:修改参数类型,允许接收Null值
将参数类型改为String | Null,让函数同时支持String和Null输入:
output application/json fun convertToISO(dateString: String | Null): String = if (dateString == null or !(dateString contains "Date")) "" else do { var milliseconds = (dateString[6 to -3] as Number) --- milliseconds as DateTime {unit: "milliseconds"} as String } --- { testCorrect: convertToISO("/Date(1716249600000)/"), testWrongEmpty : convertToISO(""), testWrongNull : convertToISO(null) }
方案2:调用函数时提前处理Null值
使用default操作符,在传入函数前将Null替换为符合参数类型的默认值(比如空字符串):
output application/json fun convertToISO(dateString: String): String = if (!(dateString contains "Date")) "" else do { var milliseconds = (dateString[6 to -3] as Number) --- milliseconds as DateTime {unit: "milliseconds"} as String } --- { testCorrect: convertToISO("/Date(1716249600000)/"), testWrongEmpty : convertToISO(""), testWrongNull : convertToISO(null default "") }
关键说明
DataWeave的类型检查是前置执行的,参数类型不匹配会直接阻断函数调用,因此函数内部的空值判断无法覆盖这种场景,必须从参数定义或调用入口层面解决类型兼容问题。
内容的提问来源于stack exchange,提问作者stewchicken
相关产品推荐
相关产品推荐

