• 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);
        }
    }
  • 相关阅读:
    JavaScript自动化构建工具grunt、gulp、webpack介绍
    开始使用 Vuejs 2.0 ---简单总结2
    开始使用 Vuejs 2.0 ---简单总结1
    Bootboxjs快速制作Bootstrap的弹出框效果
    FlexSlider是一个非常出色的jQuery滑动切换插件
    CSS实现背景透明,文字不透明(兼容各浏览器)
    jquery中attr和prop的区别
    GitHub 的分支创建与合并
    [译]使用NuGet管理共享代码
    [译]Nuget.Server
  • 原文地址:https://www.cnblogs.com/chenkeyu/p/14373441.html
Copyright © 2020-2023  润新知