#SpringBoot 整合 fastjson
Springboot處理返回的參數爲null、或者不返回
一、通過繼承WebMvcConfigurerAdapter,重寫configureMessageConverters方法實現
@Configuration
public class fastJsonConfig extends WebMvcConfigurerAdapter {
@Autowired
private LogCostInterceptor logCostInterceptor;
/**
* 使用阿里 fastjson 作爲JSON MessageConverter
* @param converters
*/
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
config.setSerializerFeatures(
//json格式輸出
SerializerFeature.PrettyFormat,
// 保留map爲空的字段
SerializerFeature.WriteMapNullValue,
// 將String類型的null轉成""形式
SerializerFeature.WriteNullStringAsEmpty,
// 將Number類型的null轉成0,也可以理解爲Integer
SerializerFeature.WriteNullNumberAsZero,
// 將List類型的null轉成[],而不是“””
SerializerFeature.WriteNullListAsEmpty,
// Boolean類型的null轉成false
SerializerFeature.WriteNullBooleanAsFalse,
// 處理可能循環引用的問題
SerializerFeature.DisableCircularReferenceDetect);
converter.setFastJsonConfig(config);
converter.setDefaultCharset(Charset.forName("UTF-8"));
List<MediaType> mediaTypeList = new ArrayList<>();
mediaTypeList.add(MediaType.APPLICATION_JSON);
converter.setSupportedMediaTypes(mediaTypeList);
converters.add(converter);
}
}
二、在Springboot啓動類中
@Bean
public HttpMessageConverters fastJsonConverters() {
FastJsonHttpMessageConverter4 fastConverter = new FastJsonHttpMessageConverter4();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat, SerializerFeature.IgnoreNonFieldGetter,
SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
fastConverter.setFastJsonConfig(fastJsonConfig);
List supportedMediaTypes = new ArrayList();
supportedMediaTypes.add(new MediaType("text", "json", Charset.forName("utf8")));
supportedMediaTypes.add(new MediaType("application", "json", Charset.forName("utf8")));
fastConverter.setSupportedMediaTypes(supportedMediaTypes);
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}
三、 在實體類中,添加: @JSONField註解,如果爲false,接口中不會返回這個字段。
@JSONField(serialize = false)
private String password;
阿里雲地址(https://yq.aliyun.com/users/article?spm=a2c4e.11153940.headeruserinfo.3.2b9f291aIvV32t)
歡迎關注公衆號,查看更多內容 :