在开发过程中,系统间对接是再正常不过的行为了,但是在对接过程中由于各种原因可能为空字段必须显示为空字符串,或者不显示,经过查询发现一枚神器,记录一下,以免忘记。
举个栗子:
-
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序列化属性。fastjson提供了此方法解决这个问题: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.WriteNullStringAsEmpty);
-
System.out.println(str);
-
//输出结果:{"a":1,"b":"","c":"","d":"wuzhuti.cn"}