Files
yjearth/src/main/java/com/yj/earth/common/config/JacksonConfig.java

43 lines
1.7 KiB
Java
Raw Normal View History

2025-09-08 17:01:50 +08:00
package com.yj.earth.common.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.yj.earth.annotation.ExcludeField;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* Jackson配置类
*/
@Configuration
public class JacksonConfig {
// 定义日期时间格式
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
// 注册 JavaTimeModule 以支持 LocalDateTime 等日期类型
JavaTimeModule javaTimeModule = new JavaTimeModule();
// 配置 LocalDateTime 的序列化格式
LocalDateTimeSerializer localDateTimeSerializer = new LocalDateTimeSerializer(
DateTimeFormatter.ofPattern(DATE_TIME_FORMAT)
);
javaTimeModule.addSerializer(LocalDateTime.class, localDateTimeSerializer);
objectMapper.registerModule(javaTimeModule);
// 配置自定义字段过滤器
SimpleFilterProvider filterProvider = new SimpleFilterProvider();
filterProvider.addFilter("excludeFieldFilter", new ExcludeField.Filter());
// 设置默认过滤器、防止未添加@JsonFilter的类报错
filterProvider.setDefaultFilter(com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter.serializeAll());
objectMapper.setFilterProvider(filterProvider);
return objectMapper;
}
}