如何修复Spring Boot中Jackson Java 8日期时间类型报错问题?
解决Spring Boot中Java 8日期类型序列化/反序列化问题
针对你遇到的java.time.LocalDateTime序列化报错问题,即便添加了jackson-datatype-jsr310依赖仍未解决,可按以下步骤排查修复:
1. 优化依赖配置,避免版本冲突
Spring Boot 2.6.7自带的Jackson版本为2.13.x,你手动指定的版本2.13.3是匹配的,但更稳妥的方式是借助Spring Boot的依赖管理自动控制版本,移除手动指定的版本号:
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
修改后刷新Gradle依赖,确保依赖正确导入。
2. 配置Jackson启用JSR310模块
添加依赖后,还需要确保Jackson正确加载该模块,以下是几种常用配置方式:
方式一:通过配置文件全局配置
在application.properties(或application.yml)中添加Jackson相关配置,Spring Boot会自动为默认的ObjectMapper注册JSR310模块:
# 关闭日期转时间戳,输出ISO格式字符串 spring.jackson.serialization.write-dates-as-timestamps=false # 禁用时区自动调整,保持原时间信息 spring.jackson.deserialization.adjust-dates-to-context-time-zone=false
方式二:自定义Jackson配置类
如果需要更灵活的配置,可以创建配置类手动注册模块:
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class JacksonConfig { @Bean public ObjectMapper objectMapper() { ObjectMapper objectMapper = new ObjectMapper(); // 注册Java 8日期时间模块 objectMapper.registerModule(new JavaTimeModule()); // 可选:设置日期输出为ISO格式而非时间戳 objectMapper.disable(com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); return objectMapper; } }
方式三:在实体类字段上添加注解
如果仅需针对个别字段配置,可以在LocalDateTime字段上添加序列化/反序列化注解:
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; // 实体类示例 public class YourEntity { // ... @JsonSerialize(using = LocalDateTimeSerializer.class) @JsonDeserialize(using = LocalDateTimeDeserializer.class) private LocalDateTime createTime; // getter/setter }
3. 检查手动创建的ObjectMapper
如果项目中有手动创建ObjectMapper的代码,需要确保这些实例也注册了JavaTimeModule,不要使用未配置的默认ObjectMapper。
完成以上配置后,重启应用测试即可解决LocalDateTime的序列化/反序列化问题。
内容的提问来源于stack exchange,提问作者Kalindu
相关产品推荐
相关产品推荐

