2016-08-24 4 views
0

это мой код запроса, пожалуйста, помогите мне разобрать его правильно. Я хочу все варианты для каждого конкретного вопроса, но у меня есть только один вариант. Можно ли его решить. Я привязал SS своего формата данных. enter image description hereПроблема при анализе запроса Json volley

JsonObjectRequest request = new JsonObjectRequest(
      "http://www.proprofs.com/quiz-school/mobileData/request.php?request=QuizStart&module=handShake&title=does-your-crush-like-you-girls-only_1", 
      null, 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        Log.d(TAG, response.toString()); 
        hidePDialog(); 

        // ArrayList<Data> listData = new ArrayList<>(); 
        if (response != null && response.length() > 0) {  

         try {  
          JSONArray array = response.getJSONArray("quiz"); 
          // JSONObject jsonObject = array.getJSONObject(0); 
          for (int i = 0; i < array.length(); i++) { 

           JSONObject currentArray = array.getJSONObject(i); 
           DataQuestions movie = new DataQuestions(); 
           movie.setQuestion(currentArray.getString("question")); 
           String question = currentArray.getString("question"); 
           System.out.println("question----------" + question); 
           movie.setQuesImage(currentArray.getString("QuesImage")); 
           String image = currentArray.getString("QuesImage"); 
           System.out.println("QuesImage----------" + image);  

           JSONArray keys= currentArray.getJSONArray("keys"); 
           for(int j =0;j<keys.length();j++){ 
            JSONObject keyobject = keys.getJSONObject(j); 

            movie.setOption(keyobject.getString("option"));}  

           /*String key = null; 

           if(keys.getJSONObject("option")) { 

            key = keys.getString("option"); 
           } 
           movie.setOption(key);*/ 

           /* JSONArray jsonArray1 = (jsonObject.getJSONArray("keys")); 
           int numberOfItemsInResp = jsonArray1.length(); 
           for (int j = 0; j < numberOfItemsInResp; j++) { 
            JSONObject jsonObject2 = jsonArray1.getJSONObject(j); 
            DataQuestions options = new DataQuestions(); 
            // movie = new DataQuestions(); 

            options.setOption(jsonObject2.getString("option")); 
            String optios = jsonObject2.getString("option"); 
            System.out.println("option----------" + options); 
            // JSONArray jsonArray1 = (response.getJSONArray("keys"));*/ 

            movieList.add(movie); 
           }  
         } catch (JSONException e) { 
          e.printStackTrace(); 
         }  
        } 
        adapter.notifyDataSetChanged();  
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

      //If an error occurs that means end of the list has reached 
      VolleyLog.d(TAG, "Error: " + error.getMessage()); 
      // hidePDialog(); 
      Toast.makeText(MainActivity.this, "No Items Available", Toast.LENGTH_LONG).show(); 
     } 
    }); 

    request.setRetryPolicy(new DefaultRetryPolicy(
      MY_SOCKET_TIMEOUT_MS, 
      DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
      DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
    // Adding request to request queue 
    AppController.getInstance().addToRequestQueue(request);  
} 
+2

Используйте Gson и создать класс в соответствии с вашим ответом. – SANAT

+0

И вы можете использовать [this] (http://www.jsonschema2pojo.org/) для создания классов из JSON мгновенно – Rehan

+0

@SANAT прав, используя данные json, создайте классы моделей и используйте библиотеку Gson, чтобы не писать тяжелый код. Не нужно беспокоиться о цикличности и добавлении данных. –

ответ

0

Это потому, что вы используете один объект во втором цикле. Вы должны определить объект-ключ и сохранить его внутри arraylist в основном объекте. Как это

public class Quiz { 
    String quizId; 
    String QuesImage; 
    String question; 
    String questionId; 
    String Type; 
    int index; 
    ArrayList<Keys> keysList; 

} 

public class Keys{ 
    String answerId; 
    String option; 
    String AnsImage; 
} 

и разобрать его

JSONArray array = response.getJSONArray("quiz"); 

for (int i = 0; i < array.length(); i++){ 
    JSONObject jsonObj = array.getJSONObject(i); 

    Quiz quiz = new Quiz(); 
    quiz.QuesImage = jsonObj.getString("QuesImage"); 
    quiz.question = jsonObj.getString("question"); 
    quiz.questionId = jsonObj.getString("questionId"); 
    quiz.Type = jsonObj.getString("Type"); 
    quiz.index = jsonObj.getInt("index"); 

    JSONArray keys = jsonObj.getJSONArray("keys"); 
    for (int j = 0; j < keys.length(); j++) { 
     JSONObject keysObj = keys.getJSONObject(j); 

     Keys keys = new Keys(); 
     keys.answerId = keysObj.getString("answerId"); 
     keys.option = keysObj.getString("option"); 
     keys.AnsImage = keysObj.getString("AnsImage"); 

     quiz.keysList.add(keys); 
    } 
} 
+0

спасибо за помощь @ugurcmk, но его не работает –