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; } }