43 lines
1.7 KiB
Java
43 lines
1.7 KiB
Java
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;
|
|
}
|
|
}
|