解決從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