遇到的问题:添加FastJson 配置后不起效果springboot 任然使用原来的JSON 解析器
第一步:需要添加FastJson 依赖
<!-- 阿里JSON解析器 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
第二步:添加添加处理器,此步骤要注意,集成WebMvcConfigurationSupport自定义类只能在一个地方出现,不能重复出现。
@Configuration
public class CustomizeWebMvcConfigurationSupport extends WebMvcConfigurationSupport {
/**
* JSON-处理器
* @return
*/
@Override
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters){
Iterator<HttpMessageConverter<?>> iterator = converters.iterator();
while(iterator.hasNext()){
HttpMessageConverter<?> converter = iterator.next();
if(converter instanceof MappingJackson2HttpMessageConverter){
iterator.remove();
}
}
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
SerializeConfig serializeConfig = SerializeConfig.globalInstance;
serializeConfig.put(LocalDateTime.class, LocalDateTimeToTimestampSerializer.instance);
config.setSerializeConfig(serializeConfig);
config.setSerializerFeatures(SerializerFeature.PrettyFormat);
fastJsonHttpMessageConverter.setFastJsonConfig(config);
converters.add(fastJsonHttpMessageConverter);
}
}
第三步:添加日期解析器
@Component
public class LocalDateTimeToTimestampSerializer implements ObjectSerializer {
public static final LocalDateTimeToTimestampSerializer instance = new LocalDateTimeToTimestampSerializer();
private static final String defaultPattern = "yyyy-MM-dd HH:mm:ss";
public LocalDateTimeToTimestampSerializer() {
}
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
SerializeWriter out = serializer.out;
if (object == null) {
out.writeNull();
} else {
LocalDateTime result = (LocalDateTime) object;
out.writeString(result.format(DateTimeFormatter.ofPattern(defaultPattern)));
}
}
}
完成以上3步就能实现JSON 日期的正常的装换
版权声明:本文为happyming886原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。