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

Spring Boot Feign Client java.util.Date日期解析异常原因咨询

问题描述

使用FeignClient调用包含java.util.Date类型的服务时,抛出如下异常:

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: java.time.format.DateTimeParseException: Text '1692738000000' could not be parsed at index 0

相关代码定义如下:
DTO类:

public class InputDto {
    private Date startDate;
    private Date endDate;
}

FeignClient服务接口:

@PostMapping(value = {"/searchFile"}, produces = {MediaType.APPLICATION_JSON_VALUE})
ResponseEntity<ServiceResponse<List<FileDto>>> searchFile(@RequestBody InputDto searchDto);

将DTO中的日期字段改为java.time.LocalDate时,调用无异常,需明确该问题的产生原因。

原因分析
  • Jackson对两种日期类型的反序列化逻辑存在差异:
    Spring默认使用Jackson处理JSON序列化与反序列化。对于java.util.Date,Jackson的默认规则仅支持直接解析数字类型的时间戳(如1692738000000);若服务端返回的是字符串形式的时间戳(如"1692738000000"),Jackson会尝试用默认日期格式(如yyyy-MM-dd)解析该字符串,匹配失败后抛出异常。
  • java.time.LocalDate的解析兼容性更强:
    处理Java 8日期API的JavaTimeModule模块,支持将字符串形式的数字转换为时间戳,再解析为LocalDate,因此能兼容服务端返回的字符串时间戳格式。
  • 服务端序列化格式是核心触发点:
    本质原因是服务端将日期字段序列化成了带引号的字符串时间戳,而非原始数字类型。这种格式无法被java.util.Date的默认解析规则处理,但LocalDate的解析逻辑可以适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:35:06