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工具网。
推荐阅读: