SpringBoot | FastJsonHttpMessageConverter(自定义消息转换器)不生效

875 阅读1分钟

FastJsonHttpMessageConverter自定义消息转换器不生效

一、在项目中使用FastJsonHttpMessageConverter 不生效

不生效代码配置
配置类

二、排查问题&解决

配置后失效,一直很疑惑。打印一下转换器排查一下。
查看消息转换器集合
通过截图代码方式查看 确认自定义的FastJsonHttpMessageConverter 排序在最后,
根据消息转换器的应用规则,会顺序选择符合要求的消息转换器,
MappingJackson2HttpMessageConverter 在FastJsonHttpMessageConverter 之前,这样会使用MappingJackson2HttpMessageConverter 进行消息转换 ;
确认原因后 就将自定义消息转换器添加MappingJackson2HttpMessageConverter 前面就可以;

@Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {
        /**
         * 1.先定义一个convert转换消息的对象 
         * 2.添加fastjson的配置信息,比如:是否要格式化返回的json数据 
         * 3.在convert中添加配置信息 
         * 4.将convert添加到converters当中
         */
        // 1.先定义一个convert转换消息的对象
        FastJsonHttpMessageConverter fjc = new FastJsonHttpMessageConverter();
        List<MediaType> mediaTypes = new ArrayList<>(16);
        mediaTypes.add(MediaType.APPLICATION_ATOM_XML);
        mediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED);
        mediaTypes.add(MediaType.APPLICATION_JSON);
        mediaTypes.add(MediaType.APPLICATION_OCTET_STREAM);
        fjc.setSupportedMediaTypes(mediaTypes);
        FastJsonConfig fj = new FastJsonConfig();
        fj.setSerializerFeatures(
                SerializerFeature.QuoteFieldNames,
                SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteNullListAsEmpty,
                SerializerFeature.WriteNullNumberAsZero,
                SerializerFeature.WriteNullBooleanAsFalse,
                SerializerFeature.WriteNullStringAsEmpty,
                SerializerFeature.BrowserCompatible,
                SerializerFeature.BrowserCompatible,
                SerializerFeature.WriteSlashAsSpecial,
                SerializerFeature.WriteDateUseDateFormat,
                SerializerFeature.DisableCircularReferenceDetect
        );
        fjc.setFastJsonConfig(fj);
        return new HttpMessageConverters(fjc);
    }

这样就可以了

如果对你有帮助,加个关注把~
在这里插入图片描述