当JSONObject中的value=null时,key竟然会消失?

举报
_陈哈哈 发表于 2022/01/22 23:01:33 2022/01/22
1.8k+ 0 0
【摘要】 我们每天都在用JSON,但JSON中的一些坑你们都知道吗? 比如, JSON的value值为null时,key会直接没了? value为Date类型时,JSON.toJSONString打印出来的是时间戳,取出来的却是Date?等。 废话不多说,直接上代码 public static void main(String[] a...

我们每天都在用JSON,但JSON中的一些坑你们都知道吗?

比如,

JSON的value值为null时,key会直接没了?

value为Date类型时,JSON.toJSONString打印出来的是时间戳,取出来的却是Date?等。

废话不多说,直接上代码


     	public static void main(String[] args) {
      		demoJSON();
     		// demoMap();
      	}
     	/**
       * JSON单元测试接口
       */
     	public static void demoJSON() {
     		JSONObject json = new JSONObject();
      		json.put("date",new Date());
      		json.put("demo","");
      		json.put("key",null);
      		System.out.println("json.toString:" + json.toJSONString());
     		String keyDate = json.get("date") + "";
     		String demo1 = json.get("demo") + "";
     		String key1 = json.get("key") + "";  //这里转成了String
     		String key2 = json.getString("key");
     		String key1str = key1.toString();  //未报错
     		// String key2str = key2.toString(); //报错:java.lang.NullPointerException
      		System.out.println("json -- keyDate:" + keyDate);
      		System.out.println("json -- key1:" + key1);
      		System.out.println("json -- key2:" + key2);
      		System.out.println("json -- key1str:" + key1str);
             // System.out.println("json -- key1str:" + key1str);
      		System.out.println("");
      	}
  
 

      //打印出来的
      json.toString:{"date":1573971907724,"demo":""}
      json -- keyDate:Sun Nov 17 14:25:07 CST 2019
      json -- key1:null
      json -- key2:null
      json -- key1str:null
  
 

可见,

1.JSONObject的value对以格式date存放的数据,toJSONString时显示为时间戳;

2.如果value为null时,key将直接被取消,get到null值;

所以我们在开发过程中,往JSONObject中赋值时,一定要先判断该值是否为null,及时处理。

断点来看一下:

文章来源: chensj.blog.csdn.net,作者:_陈哈哈,版权归原作者所有,如需转载,请联系作者。

原文链接:chensj.blog.csdn.net/article/details/103108427

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。