解决从Map、JSONObject取不存在键值对时的异常情况

解决从Map、JSONObject取不存在键值对时的异常情况

目录

从Map、JSONObject取不存在键值对时异常

1.在Map中取不存在的键值对时不会报异常

2.在JSONObject中取不存在的键值对时分两种情况

遍历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); }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持易知道(ezd.cc)。

推荐阅读