2017-02-07 8 views
-2

私はこのコード行でNullPointerException: Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object referenceを取得しています。NullPointerException:NULLオブジェクト参照で仮想メソッド '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

問題は "resultObject.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

関連する問題