学无先后,达者为师

网站首页 前端文档 正文

解决JSONObject.toJSONString()输出null的问题_java

作者:EmineWang   更新时间: 2022-04-10 前端文档

JSONObject.toJSONString()输出null

问题:fastjson的api种,jsonObject.toJsonString(),当值为null时,没打印出来

代码

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("id",null);
        jsonObject.put("class","12");
        jsonObject.put("name","");
        // 使用默认序列化方式打印
        System.out.println(jsonObject.toJSONString());
        // 使用指定序列化方式
        System.out.println(jsonObject.toJSONString(jsonObject,SerializerFeature.WriteMapNullValue));

输出

      {"name":"","class":"12"}
     {"id":null,"name":"","class":"12"}

可以发现,使用默认方式时,id没有打印null,指定序列化SerializerFeature.WriteMapNullValue,会打印null

可以看到

在这里插入图片描述

看下SerializerFeature属性

名称 含义
QuoteFieldNames 输出key时是否使用双引号,默认为true
UseSingleQuotes 使用单引号而不是双引号,默认为false
WriteMapNullValue 是否输出值为null的字段,默认为false
WriteEnumUsingToString Enum输出name()或者original,默认为false
SortField 按字段名称排序后输出。默认为false
WriteTabAsSpecial 把\t做转义输出,默认为false
PrettyForma 结果是否格式化,默认为false
WriteClassName 序列化时写入类型信息,默认为false。反序列化是需用到

不要盲目的使用JSONObject.toJSONString

JSONObject.toJSONString会默认执行你这个要解析的类中的所有get方法,很容易出现空指针异常,而应该换为gson.toJson()这个方法

原文链接:https://blog.csdn.net/a718515028/article/details/96474269

栏目分类
最近更新