2017-02-07 12 views
-2

Я получаю NullPointerException: Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object reference в этой строке кода.NullPointerException: попытка вызвать виртуальный метод 'int org.json.JSONArray.length()' в ссылке нулевого объекта

for (int i = 0; i < jsonArray.length(); i++) { 

Мой код,

private List<QuizWrapper> returnParsedJsonObject(String result) { 

    List<QuizWrapper> jsonObject = new ArrayList<QuizWrapper>(); 
    JSONObject resultObject = null; 
    JSONArray jsonArray = null; 
    QuizWrapper newItemObject = null; 
    try { 
     resultObject = new JSONObject(result); 
     System.out.println("Testing the water " + resultObject.toString()); 
     jsonArray = resultObject.optJSONArray("quiz_questions"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    for (int i = 0; i < jsonArray.length(); i++) { 
     JSONObject jsonChildNode = null; 
     try { 
      jsonChildNode = jsonArray.getJSONObject(i); 
      int id = jsonChildNode.getInt("id"); 
      String question = jsonChildNode.getString("question"); 
      String answerOptions = jsonChildNode.getString("possible_answers"); 
      int correctAnswer = jsonChildNode.getInt("correct_answer"); 
      newItemObject = new QuizWrapper(id, question, answerOptions, correctAnswer); 
      jsonObject.add(newItemObject); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
    return jsonObject; 
} 

Моя ошибка LogCat,

FATAL EXCEPTION: main 
    Process: androidquizapplication.inducesmile.com.itona, PID: 12093 
    java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object reference 
     at androidquizapplication.inducesmile.com.itona.QuizActivity.returnParsedJsonObject(QuizActivity.java:246) 
     at androidquizapplication.inducesmile.com.itona.QuizActivity.access$1400(QuizActivity.java:37) 
     at androidquizapplication.inducesmile.com.itona.QuizActivity$AsyncJsonObject.onPostExecute(QuizActivity.java:201) 
     at androidquizapplication.inducesmile.com.itona.QuizActivity$AsyncJsonObject.onPostExecute(QuizActivity.java:167) 

ваша помощь поможет мне много.

ответ

0

проблема «результатObject.optJSONArray (« quiz_questions »)» это значение равно null.

List<QuizWrapper> jsonObject = new ArrayList<QuizWrapper>(); 
JSONObject resultObject = null; 
JSONArray jsonArray = null; 
QuizWrapper newItemObject = null; 
try { 
    resultObject = new JSONObject(result); 
    System.out.println("Testing the water " + resultObject.toString()); 
    jsonArray = resultObject.optJSONArray("quiz_questions"); 
} 
catch (JSONException e) { 
    e.printStackTrace(); 
} 
if (jsonArray != null) {  // check jsonArray is null? 
    for (int i = 0; i < jsonArray.length(); i++) { 
     JSONObject jsonChildNode = null; 
     try { 
      jsonChildNode = jsonArray.getJSONObject(i); 
      int id = jsonChildNode.getInt("id"); 
      String question = jsonChildNode.getString("question"); 
      String answerOptions = jsonChildNode.getString("possible_answers"); 
      int correctAnswer = jsonChildNode.getInt("correct_answer"); 
      newItemObject = new QuizWrapper(id, question, answerOptions, correctAnswer); 
      jsonObject.add(newItemObject); 
     } 
     catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
    return jsonObject; 
} 
+0

жаль, что я так начинающий, но quiz_questions мой стол, и что таблица имеет значение. но все равно результат null (пустой). :( – Joshua

+0

вы должны проверить свой код и найти первый нулевой объект. –

+0

Сэр это уже работает на меня. СПАСИБО ВАС ОЧЕНЬ МНОГО! Вы спасете меня от головной боли – Joshua