解决从Map、JSONObject取不存在键值对时的异常情况
从Map、JSONObject取不存在键值对时异常
1.在Map中取不存在的键值对时不会报异常
只会返回null
@Test public void testMap() { Map<String, Object> map = new HashMap<String, Object>(); map.put("d", 10); Object b = map.get("c"); System.out.println(b); } //打印结果是:null。
结论:从map中取出不存在的键值对时不会报异常,会返回null。
2.在JSONObject中取不存在的键值对时分两种情况
利用jSONObject.get(Object key)方法及get(String key)取不存在的键值对时不会报异常,会返回null;但是利用jSONObject.getxxx(String key)方法取时会报空指针异常:
@Test public void testJSONObject() { Map<String, Object> map = new HashMap<String, Object>(); map.put("d", 10); JSONObject jSONObject = JSONObject.fromObject(map); int xx = jSONObject.getInt("d"); System.out.println(xx); // 从jSONObject中用get(Object key)方法取出不存在的键值对时不会报异常,会返回null Object y = jSONObject.get("dd"); System.out.println(y); // 从jSONObject中用getxxx(String key)方法取出不存在的键值对时报异常 String y2 = jSONObject.getString("dd"); System.out.println(y2); }
对null处理时会报空指针异常:
@Test public void testNull() { Object o = null; System.out.println(o); String s = (String) o; System.out.println(s); // System.out.println(s.getClass()); User u = (User) o; System.out.println(u); // System.out.println(u.getClass()); } //打印结果: //null //null //null
分析可知:不管null是何种类型,Object null或者String null或者其他类型的null,调用getClass()方法时都会报空指针异常。
如果是Object null,则可以转为其他类型的null,因为其他类型都是Object的子类。
但是其他类型的null不能随便转类型,除非是有父子关系的类型。
例如,如果String类型的想转为User类型的,就会有编译错误,说Cannot cast from String to User。
遍历JSONObject获取键值对
看代码时遇到的,遍历JSONObject,获取键值对
Map<String, String> map = new HashMap<>(); JSONObject jsonObject = new JSONObject(jsonStr);//字符串转换成JSONObject //jsonStr,例如:"{\"key\":\"value\",\"key1\":\"value1\"}" Iterator<String> keys = jsonObject.keys(); while(keys.hasNext) { String key = keys.next();//获取key String value = jsonObject.getString(key);//获取value map.put(key, value); }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
IDEA项目maven project没有出现plugins和Dependencies问题
这篇文章主要介绍了IDEA项目maven project没有出现plugins和Dependencies问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12springmvc前台向后台传值几种方式总结(从简单到复杂)
今天小编就为大家分享一篇springmvc前台向后台传值几种方式总结(从简单到复杂),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-08-08Java DriverManager.getConnection()获取数据库连接
这篇文章主要介绍了Java DriverManager.getConnection()获取数据库连接,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-01-01springboot tomcat的maxHttpFormPostSize参数示例解析
这篇文章主要介绍了springboot tomcat的maxHttpFormPostSize参数示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-08-08SpringBoot Admin集成诊断利器Arthas示例实现
这篇文章主要为大家介绍了SpringBoot Admin集成诊断利器Arthas示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-06-06
最新评论