FastJSON2 对象转String时属性值为null时,转化后的Json中多出一个逗号问题

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
WriteNullListAsEmptyList字段如果为null,输出为[],而非null
WriteNullStringAsEmpty:字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalseBoolean字段如果为null,输出为false,而非null

你可能感兴趣的:(零碎知识,json,java)