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

目录
  • JSONObject.toJSONString()输出null
    • 代码
    • 输出
    • 看下SerializerFeature属性
  • 不要盲目的使用JSONObject.toJSONString

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()这个方法

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • JSONObject toJSONString错误的解决

    目录 JSONObject toJSONString错误 1.com.alibaba.fastjson.JSONObject 继承了JSON 2.在使用时需要注意的地方 3.默认过滤掉值为null的key JSONUtils.toJSONString的一个坑 不需要判断使用StringUtils.isBlank进行判断 JSONObject toJSONString错误 1.com.alibaba.fastjson.JSONObject 继承了JSON 可以使用其2个重要的方法: Model m

  • 解决JSON.toJSONString首字母大小写的问题

    目录 JSON.toJSONString首字母大小写 问题场景 如何解决 JSONObject.toJSONString把属性的大小写改变了 JSON.toJSONString首字母大小写 问题场景 最近在做医院项目,医院方面his部分的入参出参由mirth去封装了,写了一版接口文档给了我. 我一看就有点闹心,首字母全是大写.和我上一家待过的项目里的类名字段名全是大写的闹心程度差不多… 因为我需要用http请求去调他的接口,传参只能用String,所以需要用到JSON工具去转成String. 但

  • JSON.toJSONString()空字段不忽略修改的问题

    目录 JSON.toJSONString()空字段不忽略修改 JSON.toJSONString()丢失/少字段 问题描述 原因 JSON.toJSONString()空字段不忽略修改 使用JSON.toJSONString(object)方法,返回的json中,默认会将为空的字段自动忽略. public static void main(String[] args) {     DossierApply dossierApply = new DossierApply();     String

  • JSON.parseObject和JSON.toJSONString实例详解

    JSON.parseObject,是将Json字符串转化为相应的对象:JSON.toJSONString则是将对象转化为Json字符串.在前后台的传输过程中,Json字符串是相当常用的,这里就不多介绍其功能了,直接举一下应用的小例子,帮助理解这两个方法的用法. 首先用maven引入fastjson <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apa

  • 使用JSON.toJSONString()返回{}的原因

    目录 JSON.toJSONString()返回{}原因 测试代码 原因 JSON.toJSONString的坑有些字段没有了 1.问题 2.解决方式 3.原因 JSON.toJSONString()返回{}原因 测试代码 public static void main(String[] args) {undefined ResultModel resultModel = ResultModel.error("110","error"); System.out.pr

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

    目录 JSONObject.toJSONString()输出null 代码 输出 看下SerializerFeature属性 不要盲目的使用JSONObject.toJSONString JSONObject.toJSONString()输出null 问题:fastjson的api种,jsonObject.toJsonString(),当值为null时,没打印出来 代码 JSONObject jsonObject = new JSONObject(); jsonObject.put("id&qu

  • 利用JSONObject.toJSONString()包含或排除指定的属性

    目录 JSONObject.toJSONString包含或排除指定的属性 演示程序 JSONObjecttoJSONString遇到的坑 引入pom文件 使用JSONObject输出int类型的map JSONObject.toJSONString包含或排除指定的属性 将一个实体对象转换成Json字符串 JSON.toJSONString() FastJson提供的SerializeFilter类可以指定转换时要包含的属性,或者指定转换时要排除的属性. JSONObject.toJSONStri

  • 使用JSONObject.toJSONString 过滤掉值为空的key

    目录 JSONObject.toJSONString过滤值为空的key 情况 也就是这个方法 JSONObject.toJSONString自动过滤空值 JSONObject.toJSONString 过滤值为空的key 情况 public static String getJsonResult(int status, String msg, Object data){undefined         Map<String, Object> resultMap=new HashMap<

  • 关于JSONObject.toJSONString出现地址引用问题

    目录 JSONObject.toJSONString地址引用问题 不要盲目的使用JSONObject.toJSONString JSONObject.toJSONString地址引用问题 如果一个对象中有两个同类型的对象属性a.b,如果a.b直接引用同一对象的内存地址,JSONObject.toJSONString方法得到的json字符串会出现内存地址引用. public static void main(String[] args) {         JsonVO jsonVO = new

  • 解决JSON数据因为null导致数据加载失败的方法

    一.首先分析问题: 使用NSJSONSerialization或者AFN框架的AFHTTPSessionManager(底层也是NSJSONSerialization)将NSData数据转化成OC对象,有时会出现URL正确,加载数据任然会报错: reason: '-[NSNull length]: unrecognized selector sent to instance 分析原因发现,转化出来的OC对象中含有null.所以,NSNull没有length方法,所以会报找不到方法错误. 二.解决

  • 解决MySQL客户端输出窗口显示中文乱码问题的办法

    最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示: 上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的字符编码不对造成的,可以使用如下的命令查看输出窗口使用的字符编码:show variables like 'char%'; 命令执行完成之后显示结果如下所示: 可以看到,现在是使用utf8字符编码来显示中文数据的,但是因为操作系统是中文操作系统,默认使用的字符集是GB2312,所以需要把输出窗口使用的字符编码

  • 解决Python一行输出不显示的问题

    在使用python函数print()时,如下代码会出现输出无法显示的问题: 分三次在一行输出 123 print(1, end="") print(2, end="") print(3, end="") 当print不加end时,print函数会自动添加换行,和C++不一样需要手动添加cout<endl.加了end,一行后面没有了换行符,这时候是没办法输出的,也就是说,一行输出后面必须要有换行符输出才能显示. 修改代码: print(1,

  • 解决Python3 控制台输出InsecureRequestWarning问题

    解决Python3 控制台输出InsecureRequestWarning的问题 问题: 使用Python3 requests发送HTTPS请求,已经关闭认证(verify=False)情况下,控制台会输出以下错误: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.rea

随机推荐