2016-03-30 2 views
-2

У меня очень странная проблема. Мне нужно отправить некоторые данные для разрыва, используя библиотеку волейбола в формате Json. Я получу данные из другого API и перенаправляю его на сервер. Теперь проблема в том, что каждый раз, когда я вызываю функцию для создания JSON, она получает последнее значение из списка.Android - Получить последнее предложение из списка

Вот код для преобразования jsonarray

JSONObject mainObject = new JSONObject(); 
JSONArray jsonBody; 
JSONObject object; 

Внутри OnClick кнопки создать jsonarray - код ниже

btn_rec_invest_now.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Log.e(TAG, "Size of list : " + sipDetailses.size()); 

      jsonBody = new JSONArray(); 
      object = new JSONObject(); 

      for (int i = 0; i < sipDetailses.size(); i++) { 

       String ID = sipDetailses.get(i).getId(); 
       String DATE = sipDetailses.get(i).getSip_date_include(); 
       String AMOUNT = sipDetailses.get(i).getMinimum_investment(); 
       String TENURE = "1"; 

       Log.e(TAG, "ID : " + ID); 
       Log.e(TAG, "DATE : " 
         + sipDetailses.get(i).getSip_date_include()); 
       Log.e(TAG, "AMOUNT : " 
         + sipDetailses.get(i).getMinimum_investment()); 
       Log.e(TAG, "TENURE : " + i); 
       Log.e(TAG, "USER ID : " + "1"); 
       Log.d(TAG, "================="); 

       try { 
        object.put("sch_id", sipDetailses.get(i).getId()); 
        object.put("date", DATE); 
        object.put("amount", AMOUNT); 
        object.put("tenure", TENURE); 
        object.put("user_id", "1"); 

        jsonBody.put(object); 



       } catch (JSONException e) { 

        Log.d(TAG, "EXCEPTION OCCRUDED: " + e.toString()); 
       } 
      } 
      try { 
       mainObject.put("A", jsonBody); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      Log.e("", "JSONBODY : " + mainObject.toString()); 

      sendDetails(mainObject); 
     } 
    }); 

Значение Я вошел приходит правильно, но sch_id в mainObejct приходит дубликат, здесь json, который был создан

{ 
    "A": [ 
    { 
     "sch_id": "738", 
     "date": "1,7,15,25", 
     "amount": "5000", 
     "tenure": "1", 
     "user_id": "1" 
    }, 
    { 
     "sch_id": "738", 
     "date": "1,7,15,25", 
     "amount": "5000", 
     "tenure": "1", 
     "user_id": "1" 
    }, 
    { 
     "sch_id": "738", 
     "date": "1,7,15,25", 
     "amount": "5000", 
     "tenure": "1", 
     "user_id": "1" 
    } 
    ] 
} 

Здесь sch_id всегда приходит 738, а - Log.e (TAG, "ID:" + ID); Идентификатор приходит по-разному как некоторое время - 738, 607, 521 и т. Д. - Это подходит. Помогите мне получить правильный sch_id в массиве. Заранее спасибо.

+0

Попробуйте 'jsonBody = mainObject.getJsonArray ("А");' По вашему JSON. –

+0

Где я это делаю? – Shane

+0

Не могли бы вы указать, что содержит 'sipDetailses'? –

ответ

1

Я думаю, что вы создаете объект для своего JSONObject вне цикла. Создайте экземпляр для вашего объекта (object = new JSONObject();) для внутреннего цикла. как показано ниже

for (int i = 0; i < sipDetailses.size(); i++) { 
    JSONObject object = new JSONObject(); 

    // do your operations 

    jsonBody.put(object); 

}

+0

Спасибо, его работа. – Shane

Смежные вопросы