fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,那fastjson如何才能忽略属性为null的字段?下面来我们就来给大家讲解一下这方面的内容。
设置SerializerFeature序列化属性 SerializerFeature.WriteMapNullValue,输出值为null的字段。
public static void main(String[] args)
{
JSONObject jsonObject = new JSONObject();
jsonObject.put("a", "12345");
jsonObject.put("b", null);
System.out.println("直接打印 jsonObject 结果:" + jsonObject);
System.out.println("不设置属性转成字符串结果:" + JSON.toJSONString(jsonObject));
System.out.println("设置序列化属性 打印结果:" + JSON.toJSONString(jsonObject, SerializerFeature.WriteMapNullValue));
}运行结果:

fastjson生成json时Null属性不显示的解决方法:
Map < String, Object > jsonMap = new HashMap < String, Object > ();
jsonMap.put("a", 1);
jsonMap.put("b", "");
jsonMap.put("c", null);
jsonMap.put("d", "wuzhuti.cn");
String str = JSONObject.toJSONString(jsonMap);
System.out.println(str);
//输出结果:{"a":1,"b":"",d:"wuzhuti.cn"}从输出结果可以看出,null对应的key已经被过滤掉;这明显不是我们想要的结果,这时我们就需要用到fastjson的SerializerFeature序列化属性
也就是这个方法:JSONObject.toJSONString(Object object, SerializerFeature... features)
Fastjson的SerializerFeature序列化属性
QuoteFieldNames———-输出key时是否使用双引号,默认为true;
WriteMapNullValue——–是否输出值为null的字段,默认为false;
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null;
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null;
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null;
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null;
Map < String, Object > jsonMap = new HashMap < String, Object > ();
jsonMap.put("a", 1);
jsonMap.put("b", "");
jsonMap.put("c", null);
jsonMap.put("d", "wuzhuti.cn");
String str = JSONObject.toJSONString(jsonMap, SerializerFeature.WriteMapNullValue);
System.out.println(str);
//输出结果:{"a":1,"b":"","c":null,"d":"wuzhuti.cn"}fastjson生成json时Null属性不显示的解决方法就是这样解决的,希望能够给大家带来帮助!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。
推荐阅读: