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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:42:35