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

Vertx Swagger Codegen解析date-time参数报JsonParseException错误求助

问题根因

报错本质是Json.mapper.readValue的错误使用:该方法要求入参是合法的JSON格式字符串,你传入的纯日期文本2021-06-06T10:50:00Z没有包裹JSON要求的双引号,不属于合法JSON字符串,所以Jackson解析时会把第一个-当成非法字符抛出异常;传入0时因为数字本身是合法JSON值,所以可以被正常解析为时间戳对应的OffsetDateTime。

解决方案

方案1:修改swagger vertx codegen的类型转换模板(永久生效,推荐)

swagger vertx codegen生成的参数转换逻辑默认使用了通用JSON反序列化逻辑,对date-time类型的query参数适配错误,你可以自定义代码生成模板,将date-time类型query参数的转换逻辑从:

Json.mapper.readValue(paramStr, OffsetDateTime.class)

替换为JDK自带的时间解析方法:

// 标准ISO 8601格式可直接解析
OffsetDateTime.parse(paramStr)

如果有自定义格式需求,可额外声明DateTimeFormatter指定格式规则即可。

方案2:直接修改生成的接口代码

如果不想调整代码生成模板,可以直接修改生成好的verticle接口文件里对应参数的转换逻辑,替换为上述直接解析的代码即可生效。

方案3:调用侧兼容(不推荐)

如果暂时无法修改服务端代码,可以让调用侧传参时给日期字符串包裹双引号,比如传入"2021-06-06T10:50:00Z"(注意需要做URL编码,双引号编码为%22),但这种方式不符合OpenAPI规范对query参数的定义,不建议长期使用。

内容的提问来源于stack exchange,提问作者BigBug

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:42:02