2017-04-25 96 views
-4

org.json.JSONException:在陣列沒有價值org.json.JSONException:沒有價值

StringRequest req = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String s) { 

      try { 
       questionsList = new ArrayList<QuestionsBean>(); 
       JSONObject jsonObject = new JSONObject(s); 
       JSONArray question = jsonObject.getJSONArray("questions"); 
       for (int i = 0; i < question.length(); i++) { 
        JSONObject x = question.getJSONObject(i); 
        QuestionsBean u = new QuestionsBean(); 
        u.setDate(x.getString("date")); 
        u.setQuestion(x.getString("question_text")); 
        JSONObject bject = new JSONObject(); 
        JSONArray answers = bject.getJSONArray("answers"); 
        for (int j = 0; j < answers.length(); j++) { 
         JSONObject xx = answers.getJSONObject(i); 
         u.setAnswer_body(xx.getString("Answer_body")); 
        } 
        questionsList.add(u); 
+0

這意味着你的'answers'陣列將是'null'。 – Piyush

回答

3

您沒有在正確的JSONObject上致電getJSONArray。使用

JSONArray answers = x.getJSONArray("answers"); 

此外,由於你的JSONArray可能爲空,使用optJSONArray避免異常,並檢查它是否在繼續之前空。

喜歡的東西

JSONArray answers = x.optJSONArray("answers"); 
if (answers != null) { 
    // for loop 
} 
1
JSONObject bject = new JSONObject(); 
JSONArray answers = bject.getJSONArray("answers"); 

您在這裏構建一個空的JSONObject,所以這是正常的它無法找到「答案」在它。