在项目中发现接口返回的json数据中,值为null的字段没有返回,针对这一问题采用如下方法即可解决 新增配置如下

@Bean

@Primary

public HttpMessageConverters fastJsonHttpMessageConverters(){

FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

FastJsonConfig fastJsonConfig = new FastJsonConfig();

fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");

fastJsonConfig.setSerializerFeatures(

SerializerFeature.PrettyFormat, // 格式化输出,包括缩进

SerializerFeature.WriteNullStringAsEmpty, // 防止某个String字段为null时,返回结果直接不显示该字段

SerializerFeature.WriteNullListAsEmpty, // 同上,强制返回某个为null的List字段

SerializerFeature.WriteMapNullValue, // 同上

SerializerFeature.MapSortField, // 根据字段名排序,默认为升序

SerializerFeature.DisableCircularReferenceDetect // 消除对同一对象循环引用的问题(第一次引用过某个对象后,后面在引用一次就会将引用的地址放过来)

);

fastConverter.setFastJsonConfig(fastJsonConfig);

return new HttpMessageConverters(fastConverter);

}

注:上述代码所在的类需要标注@Configuration注解 DisableCircularReferenceDetect效果展示

/**

* 消除对同一对象循环引用的测试

*/

@Test

public void testDisableCircularReferenceDetect(){

List list = new ArrayList<>();

Object o = new Object();

list.add(o);

list.add(o);

System.out.println(list.size());// 2

System.out.println(JSONObject.toJSONString(list));//[{},{"$ref":"$[0]"}]

System.out.println(JSONObject.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect));//[{},{}]

}

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: 

发表评论

返回顶部暗黑模式