一、在项目中使用FastJsonHttpMessageConverter 不生效
不生效代码配置
image.png
二、排查问题&解决
配置后失效,一直很疑惑。打印一下转换器排查一下。
image.png
通过截图代码方式查看 确认自定义的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);
}
这样就可以了
参考:https://blog.csdn.net/qq_26878363/article/details/97389275