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

Jackson绑定Object.class的UntypedObjectDeserializer仅反序列化日期字符串问题

问题解答

核心规则

Jackson 反序列化器选择遵循最具体类型优先的匹配逻辑:

  • 若反序列化目标字段明确声明为String类型,Jackson 会直接匹配String.class对应的反序列化器(内置StringDeserializer或自定义的String类型反序列化器),不会触发绑定Object.class的反序列化器。
  • 只有当目标字段的声明类型为Object时,Jackson 才会调用你注册的CustomObjectDeserializer。

现象说明

你观察到的「仅日期类字符串会被CustomObjectDeserializer处理」,是因为示例 JSON 中只有value字段对应的 POJO 声明类型为Object,其余字段如field、operator、connector的声明类型均为String,自然不会进入Object类型反序列化器的执行逻辑,而非普通字符串无法被该反序列化器识别。

如果Object类型字段传入普通字符串,代码会尝试按日期格式解析失败后调用父类逻辑,直接将字符串作为String类型返回。

代码优化建议

  • SimpleDateFormat是线程不安全的,建议替换为线程安全的DateTimeFormatter,避免多线程场景下出现解析异常。
  • 你定义的日期格式yyyy-MM-dd'T'HH:mm:ss.SSS未匹配输入末尾的Z时区标识,解析时会直接使用你设置的UTC时区处理,建议调整格式为yyyy-MM-dd'T'HH:mm:ss.SSSX兼容带Z的日期字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:15:03