feat(jackson): 使用Jackson2ObjectMapperBuilder配置ObjectMapper
- 使用Jackson2ObjectMapperBuilder构建ObjectMapper以确保与Spring Boot完全兼容 - 配置JavaTimeModule以支持Java 8时间类型 - 设置时区为GMT+8- 禁用将日期写为时间戳 - 忽略未知属性的反序列化错误 - 在application.yml中显式启用JavaTimeModule模块
This commit is contained in:
@@ -9,9 +9,11 @@ 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 org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.TimeZone;
|
||||
|
||||
/**
|
||||
* Jackson配置类 - 强制配置版本
|
||||
@@ -29,12 +31,13 @@ public class JacksonConfig {
|
||||
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
||||
|
||||
/**
|
||||
* 强制配置ObjectMapper,确保JavaTimeModule被正确注册
|
||||
* 使用Jackson2ObjectMapperBuilder构建ObjectMapper
|
||||
* 确保与Spring Boot完全兼容
|
||||
*/
|
||||
@Bean
|
||||
@Primary
|
||||
public ObjectMapper objectMapper() {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
|
||||
ObjectMapper mapper = builder.build();
|
||||
|
||||
// 创建并配置JavaTimeModule
|
||||
JavaTimeModule javaTimeModule = new JavaTimeModule();
|
||||
@@ -49,9 +52,12 @@ public class JacksonConfig {
|
||||
|
||||
// 禁用将日期写为时间戳
|
||||
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||
|
||||
|
||||
// 忽略未知属性
|
||||
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
|
||||
// 设置时区
|
||||
mapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
|
||||
|
||||
return mapper;
|
||||
}
|
||||
|
||||
@@ -26,6 +26,9 @@ spring:
|
||||
write-dates-as-timestamps: false
|
||||
deserialization:
|
||||
fail-on-unknown-properties: false
|
||||
# 确保启用Java 8时间支持
|
||||
modules:
|
||||
- com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
|
||||
|
||||
# 连接池配置
|
||||
datasource:
|
||||
|
||||
Reference in New Issue
Block a user