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

举报
_陈哈哈 发表于 2022/01/22 23:01:33 2022/01/22
【摘要】 我们每天都在用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?等。

废话不多说,直接上代码


  
  1. public static void main(String[] args) {
  2. demoJSON();
  3. // demoMap();
  4. }
  5. /**
  6. * JSON单元测试接口
  7. */
  8. public static void demoJSON() {
  9. JSONObject json = new JSONObject();
  10. json.put("date",new Date());
  11. json.put("demo","");
  12. json.put("key",null);
  13. System.out.println("json.toString:" + json.toJSONString());
  14. String keyDate = json.get("date") + "";
  15. String demo1 = json.get("demo") + "";
  16. String key1 = json.get("key") + ""; //这里转成了String
  17. String key2 = json.getString("key");
  18. String key1str = key1.toString(); //未报错
  19. // String key2str = key2.toString(); //报错:java.lang.NullPointerException
  20. System.out.println("json -- keyDate:" + keyDate);
  21. System.out.println("json -- key1:" + key1);
  22. System.out.println("json -- key2:" + key2);
  23. System.out.println("json -- key1str:" + key1str);
  24. // System.out.println("json -- key1str:" + key1str);
  25. System.out.println("");
  26. }

  
  1. //打印出来的
  2. json.toString:{"date":1573971907724,"demo":""}
  3. json -- keyDate:Sun Nov 17 14:25:07 CST 2019
  4. json -- key1:null
  5. json -- key2:null
  6. 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

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

全部回复

上滑加载中

设置昵称

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

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

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