Рассматривая пример формата данных JSON, который вы разместили в своем вопросе, я не думаю, что API возвращает JSONArray, вместо этого он возвращает JSONObject . В любом случае я расскажу вам, как получить необходимые данные из проанализированных объектов, будь то JSONArray или JSONObject.
Вы почти готовы найти решение, которое ищете. Просто вставьте приведенный ниже код в метод onResponse()
.
@Override
public void onResponse(Call<List<Pandomats>> call, Response<List<Pandomats>> response) {
pandomats.addAll(response.body());
Log.v("ListPandomats", String.valueOf(pandomats.size()));
for (int i = 0; i < pandomats.size(); i++) {
Pandomats p = pandomats.get(i);
Log.v("ListPandomats", p.getModel()); // prints model
Log.v("ListPandomats", String.valueOf(p.getLatitude())); // prints latitude
}
}
Как и выше, вы можете получить любой объект из класса Pandomats
. Убедитесь, что вы инициализировали pandomats
ArrayList во время объявления или перед использованием его внутри onResponse()
метода. В противном случае вы получите NullPointerException
.
А также не забудьте записать ответ об ошибке из API внутри метода onFailure()
. Это очень важно.
@Override
public void onFailure(Call<List<Pandomats>> call, Throwable t) {
Log.e("ListPandomats", "Error" t);
}
Как я уже говорил, я думаю, что API не возвращает JSONArray, а перезапускает JSONObject. Если он возвращает JSONObject, вам нужно изменить код, как показано ниже.
JSONApi.java
public interface JsonPlaceApi {
@GET("/api/device/get/")
Call<Pandomats> loadList(); // remove List<> from return type
}
MainActivity.java
Service.getInstance()
.getJSONApi()
.loadList()
.enqueue(new Callback<Pandomats>() { /* remove List<> */
@Override
public void onResponse(Call<Pandomats> call, /* remove List<> */ Response<List<Pandomats>> response) {
Pandomats p = response.body();
// without for loop iteration you can get the data
Log.v("ListPandomats", p.getModel()); // prints model
Log.v("ListPandomats", String.valueOf(p.getLatitude())); // prints latitude
}
@Override
public void onFailure(Call<Pandomats> call, Throwable t) { /* remove List<> */
Log.e("ListPandomats", "Error" t);
}
});
Надеюсь, теперь все ясно. Если вы получили ошибку, просто загляните в журнал ошибок. Если не понимаете, отредактируйте вопрос и опубликуйте журналы ошибок.