2012-04-19 99 views
0

在我的應用程序,我想分析JSON響應,其格式爲複雜的JSON解析Android中

{"quote":[{"orderId":"3209926"},{"totalpages":1}]} 
以下

就是我所做的代碼,但問題是如何獲得「總頁數」值?

try { 
JSONObject jObject = new JSONObject(result); 
JSONArray jArray = jObject.getJSONArray("quote"); 
for (int i = 0; i < jArray.length(); i++) 
       { 
     JSONObject offerObject = jArray.getJSONObject(i); 
     current.orderId = offerObject.getInt("orderId"); 

它顯示錯誤,當我使用

current.totalpage= offerObject.getInt("totalpages"); 

任何人知道如何解析呢?在此先感謝

+0

顯示您的完整實現 – waqaslam 2012-04-19 09:53:59

回答

3

注意getInt(),像其他JSONObjectJSONException的,如果對象獲取函數不包含請求的密鑰。因此,在您請求密鑰之前,您應該使用hasKey()來確定對象是否包含密鑰。

例如,裏面的for循環,你可以做到以下幾點:

JSONObject offerObject = jArray.getJSONObject(i); 
if(offerObject.has("orderId") { 
    current.orderId = offerObject.getInt("orderId"); 
} 
if(offerObject.has("totalpages") { 
    current.totalpage= offerObject.getInt("totalpages"); 
} 

您也可以在循環後添加標記和檢查,以確保訂單ID和總頁數都存在於JSON數據。

+0

實際上,響應包含orderid和totalpages的值。 – 2012-04-19 09:54:17

+0

是的,但循環第一次迭代中檢查的子對象不包含「totalpages」。同樣,在第二次迭代中檢查的子對象不包含「orderId」。在第一次迭代中檢查的子對象是:'{「orderId」:「3209926」}'。第二個檢查的子對象是:'{「totalpages」:1}'。 – 2012-04-19 09:58:26

+0

是的亞當..你說得對..那麼我怎麼解析這個? – 2012-04-19 10:01:32

1

我不知道爲什麼你的json有這樣的結構。但是如果你想解析它,那麼你將不得不像has函數那樣做下面的事情。

for (int i = 0; i < jArray.length(); i++) { 
     JSONObject offerObject = jArray.getJSONObject(i); 
     if(offerObject.has("orderId")) { 
      current.orderId = offerObject.getInt("orderId"); 
     } else if(offerObject.has("totalpages")) { 
      current.totalpage= offerObject.getInt("totalpages"); 
     } 
} 
+0

我試過,但在logcat中顯示的響應是錯誤解析數據org.json.JSONException:沒有值的totalpages – 2012-04-19 10:00:12

+0

你可以檢查什麼是offerObject.has(「totalpages」)的結果 – Josnidhin 2012-04-19 10:06:02

+0

還有一件事是你可以使用這個http://developer.android.com/reference/org/json/JSONObject.html類 – Josnidhin 2012-04-19 10:07:20