SpringBoot的SpringMVC使用FastJson依赖时LocalDateTime全局配置序列化格式

如果SpringBoot没有配置maven的json依赖,默认使用JacksonJson,那么你可以像网上资料介绍的那样进行配置,如下:

@Configuration
public class WebMvcConfig {

    @Bean
    public Converter<String, LocalDate> localDateConverter() {
        return new Converter<String, LocalDate>() {
            @Override
            public LocalDate convert(String source) {
                return DateUtil.parseDate(source);
            }
        };
    }

    @Bean
    public Converter<String, LocalDateTime> localDateTimeConverter() {
        return new Converter<String, LocalDateTime>() {
            @Override
            public LocalDateTime convert(String source) {
                return DateUtil.parseDateTime(source);
            }
        };
    }
}

如果你在maven中有配置FastJson,Spring的加载机制会优先使用手动配置的FastJson而不是JacksonJson。

但是由于FastJson对SpringMVC的兼容不好,上面的方式并不能让自定义格式全局有生效,经过debug代码发现,需要使用下面的方式配置,才能全局生效:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(
                SerializerFeature.PrettyFormat,
                SerializerFeature.WriteMapNullValue,
                SerializerFeature.DisableCircularReferenceDetect
        );
        fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
        fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
        converters.add(0, fastJsonHttpMessageConverter);
    }
}

 

posted @ 2021-02-04 16:35  宇的季节  阅读(151)  评论(0编辑  收藏