2011-09-26 80 views
0

我有解析JSON數據有點問題,我通過server.I收到有兩個一個JSONObjects不具有數據始終,只在某些情況下,但我需要檢查,如果他們是空或不是每次.I'm使用此代碼來做到這一點:Android的JSON異常

String jsonData = new String(contentBuffer,"UTF-8"); 
      Log.w("JSONDATA","JSONDATA VALID OR NOT : "+jsonData); 
      json = new JSONObject(jsonData); 
      JSONObject jsonObj =(JSONObject) new JSONTokener(jsonData).nextValue(); 

if(jsonObj.getString("collection_id")==null){ 
       values.put("collection_id", 0); 
      }else { 
       collectionId = Integer.parseInt(jsonObj.getString("collection_id")); 
       values.put("collection_id", collectionId); 
      } 
      Log.w("COLLECTION ID ","SHOW COLLECTION ID : "+collectionId); 

      if(jsonObj.getString("card_id")!=null){ 
       values.put("card_id", cardId); 
      }else { 
       values.put("card_id", 0); 
      } 
      Log.w("CARD ID ","SHOW CARD ID : "+cardId); 

而且我希望它不會拋出異常,只是爲了檢查是否collection_idnull,在數據庫中保存0,如果沒有保存它的東西值。但是使用這段代碼會拋出JSONException。

任何想法如何解決這個問題?

+0

你能後的堆棧跟蹤?你能告訴我們你在'JSONDATA'日誌條目中記錄什麼嗎? –

回答

3

使用

if (jsonObject.has("collection_id")) 

這將檢查的JSONObject在它collection_id鍵存在。

2

你也可以使用

collectionId = jsonObj.optInt("collection_id", 0); 

這將讓該值作爲一個int如果它存在,或返回0,如果它沒有。