FastJSON2 对象转JSON时属性值为null时,转化后的Json中多出一个逗号问题
案例:
public static void main(String[] args) {
JSONObject content = new JSONObject();
content.put("userId","111");
content.put("option","2222");
content.put("password_type", "33333");
content.put("password", "44444");
content.put("lockOpenId", null);
content.put("syncStatus", "555");
System.out.println("object1.toJSONString() = " + content.toJSONString());
}
输出结果:
object1.toJSONString() = {"userId":"111","option":"2222","password_type":"33333","password":"44444",,"syncStatus":"555"}
可以看到输出的结果中多了一个逗号,且源码中可以看到lockOpenId
属性已经忽略了,但所在位置上多出了一个逗号。通过现象可以发现:默认情况下在对象属性值为null的情况下,属性会忽略,但逗号不会忽略
=解决方案:
使用JSON.toJSONString
方法的第二个参数JSONWriter.Feature... features
即可解决,使用下面的WriteMapNullValue
,具体使用视情况而定
JSONWriter.Feature
的静态枚举如下所示(常见):
QuoteFieldNames:输出key时是否使用双引号,默认为true
WriteMapNullValue:是否输出值为null的字段,默认为false
WriteNullNumberAsZero:数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty:List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty:字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse:Boolean字段如果为null,输出为false,而非null