Java Spring Boot日期格式化配置代码报错求助
Spring Boot日期格式化配置报错解决方法
报错信息
Cannot resolve symbol 'LocalDateTimeSerializer'
Cannot resolve symbol 'LocalDateTimeSerializer'
'addSerializer(com.fasterxml.jackson.databind.JsonSerializer<?>)' in 'com.fasterxml.jackson.databind.module.SimpleModule' cannot be applied to '(LocalDateTimeSerializer)'
问题原因
- 代码使用了
LocalDateTimeSerializer但未导入对应类,当前仅导入了反序列化类LocalDateDeserializer,序列化类的包路径和反序列化类不同 - 调用
JavaTimeModule的addSerializer方法时,使用了无类型参数的重载方法,导致类型匹配失败
解决步骤
- 导入
LocalDateTimeSerializer类(位于com.fasterxml.jackson.datatype.jsr310.ser包),同时导入java.time.LocalDateTime类 - 调用
addSerializer时指定要序列化的目标类型LocalDateTime.class,使用带类型参数的重载方法
修正后的完整代码
package com.api.parking_control.configs; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @Configuration public class DateConfig { public static final String DATETIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; public static final LocalDateTimeSerializer LOCAL_DATETIME_SERIALIZER = new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATETIME_FORMAT)); @Bean @Primary public ObjectMapper objectMapper() { JavaTimeModule module = new JavaTimeModule(); module.addSerializer(LocalDateTime.class, LOCAL_DATETIME_SERIALIZER); return new ObjectMapper() .registerModule(module); } }
扩展:同时配置LocalDate格式化
如果需要对LocalDate也做统一格式化,可以补充以下配置:
// 新增日期格式常量和对应的序列化/反序列化器 public static final String DATE_FORMAT = "yyyy-MM-dd"; public static final LocalDateSerializer LOCAL_DATE_SERIALIZER = new LocalDateSerializer(DateTimeFormatter.ofPattern(DATE_FORMAT)); public static final LocalDateDeserializer LOCAL_DATE_DESERIALIZER = new LocalDateDeserializer(DateTimeFormatter.ofPattern(DATE_FORMAT)); // 在objectMapper方法中添加注册逻辑 module.addSerializer(LocalDate.class, LOCAL_DATE_SERIALIZER); module.addDeserializer(LocalDate.class, LOCAL_DATE_DESERIALIZER);
内容的提问来源于stack exchange,提问作者Routfin
相关产品推荐
相关产品推荐

