fastjson如何才能忽略属性为null的字段?

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如何才能忽略属性为null的字段?.png

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工具网。

推荐阅读:

javastring转long的方法是什么?java对象怎么转String?

java异常处理原则有哪些?

java异常处理面试题有哪些?异常处理面试题总结