使用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()空字段不忽略修改

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 3 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐