JSON.toJSONString()空字段不忽略修改

使用JSON.toJSONString(object)方法,返回的json中,null对应的key已经被过滤掉,这是因为默认会将为空的字段自动忽略,这明显不是我们想要的结果。 去掉JSON.toJSONString()空字段忽略方法两个如下

  1. 方法一

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

  1. 方法二

加上这个过滤器后,所有的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);
    }
  1. 测试代码如下
    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);

    }
  1. 测试结果如下

JSON.toJSONString()空字段不忽略修改_第1张图片

你可能感兴趣的:(java代码,转换,工具类,java,json)