2013-04-24 137 views
1

我需要分析一些JSON對象,whihc看起來是這樣的:JSON對象解析

{"searchdata":{},"userdata":{"currency":"69","notificationCount":7}} 

我用下面的代碼來實現這一目標:

JSONObject rootObj = new JSONObject(getResponse); 
JSONObject jSearchData = rootObj.getJSONObject("searchdata"); 
JSONObject userData = jSearchData.getJSONObject("userdata"); 

String currency = userData.getString("currency"); 

我不能打印currency對象來自上面的代碼。我不斷收到異常:

Exception: org.json.JSONException: No value for userdata 

我不知道我在做什麼錯。

任何形式的幫助將不勝感激。

+0

痛苦少):https://sites.google .com/site/gson/gson-user-guide#TOC-Using-Gson – MemLeak 2013-04-24 08:30:21

回答

10
JSONObject rootObj = new JSONObject(getResponse); 

userData裏面rootObj內部沒有searchdata

爲空值,你應該使用:

isNull 

if (!rootObj.isNull("userdata")) { 
    JSONObject userData = rootObj.getJSONObject("userdata"); 
} 
+0

謝謝,但是如何處理來自服務器的空響應。像這個'{「searchdata」:{},「userdata」:null}'。每當我從服務器得到空響應時,我得到這個異常:'異常:org.json.JSONException:在org.json.JSONObject $ 1類型的userdata上的值null不能轉換爲JSONObject',因爲我的PostExecute()方法是給出零響應。 – Anupam 2013-04-24 08:34:26

+0

看到我的編輯.... – Blackbelt 2013-04-24 08:36:27

+0

這不是幫助我,不斷得到'異常:org.json.JSONException:值爲null ord.json.JSONObject $ 1的用戶數據無法轉換爲JSONObject',如果值爲空。當然 – Anupam 2013-04-24 08:56:10

1

使用

JSONObject userData = rootObj.getJSONObject("userdata"); 

得到currency

currency = userData.getString("currency"); 

使用這樣的方式......

檢查對象爲空..

按黑帶@的答案用途:if (!rootObj.isNull("userdata"))

+0

謝謝,但如何處理來自服務器的空響應,例如'{「searchdata」:{},「userdata」:null}' – Anupam 2013-04-24 08:31:20

+0

我在應用更改後總是收到此錯誤。 '異常:org.json.JSONException:類型爲org.json.JSONObject $ 1的userdata的值爲null無法轉換爲JSONObject' – Anupam 2013-04-24 08:44:10