2015-09-27 28 views
0

我有一個返回2個不同值的響應。在每種情況下,其中一個值爲總是爲空,另一個值爲總是包含一個值。問題是Volley不讓我指定一個空的JSON值或在if語句中檢查一個JSON值。它只是指代catch塊。我試着這樣做:如何處理排隊中的空值StringRequest

StringRequest request = new StringRequest(Request.Method.POST, "url", new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 

      try { 
       JSONObject obj = new JSONObject(response); 
       //If this is null, it stops here and goes to catch. 
       String value1 = obj.getString("value1") 
       String value2 = obj.getString("value2"); 

       //Can't perform any more code because Value1 is null 

      } catch (JSONException e) { 
       Log.d("Log","Your String was null"); 

      } 

     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.d("Log", "Unable to connect to server!"); 
     } 
    }); 

我不能用throws由於庫的設計方式,它迫使我把它放在一個try/catch。無論如何,在這附近呢?

編輯:以下異常就是我得到:

org.json.JSONException:VALUE1的

+0

爲什麼你不只是測試'response'的價值? – njzk2

+0

'response'不是空白的部分。問題是,將我的任何'get'值(在本例中爲'getString')放入變量中仍然會導致catch塊執行。因此,除非我能夠把它放在if/else中。 –

+0

我很想聽聽有什麼值得讚賞的。非常簡單的問題。 –

回答

2

您是否嘗試過使用上的JSONObject的.isNull("key")方法沒有價值?

然後,你可以做這樣的事情:

String value1 = jsonObject.isNull("value1") ? null : jsonObject.getString("value1");  
String value2 = jsonObject.isNull("value2") ? null : jsonObject.getString("value2");