2011-09-26 33 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,如果它没有。