JSON.toJSONString()空字段不忽略修改
使用JSON.toJSONString(object)方法,返回的json中,null对应的key已经被过滤掉,这是因为默认会将为空的字段自动忽略,这明显不是我们想要的结果。 去掉JSON.toJSONString()空字段忽略方法两个如下
- 方法一
SerializerFeature序列化属性
String s = JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty);
QuoteFieldNames———-输出key时是否使用双引号,默认为true WriteMapNullValue——–是否输出值为null的字段,默认为false WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非nul
- 方法二
加上这个过滤器后,所有的null和"“串都会被转换成”"值输出到字符串中
private static ValueFilter valueFilter = (o, s, o1) -> o1 == null ? "" : o1; public static void main(String[] args) { User user = new User(); String s = JSON.toJSONString(user, valueFilter); System.out.println(s); }
- 测试代码如下
private static ValueFilter valueFilter = (o, s, o1) -> o1 == null ? "" : o1; public static void main(String[] args) { User user = new User(); String s1 = JSON.toJSONString(user); System.out.println(s1); String s2 = JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty); System.out.println(s2); String s3 = JSON.toJSONString(user, valueFilter); System.out.println(s3); }
- 测试结果如下
下一篇: