#java #android #retrofit #rxjava
Получаю такую ошибку java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT, когда получаю данные с сервера. Чем вызвана эта ошибка? И как ее исправить? JSON, который приходит с сервера: { "group": [ { "name": "Group1", "description": "Test Group 1" }, { "name": "Group2", "description": "Group Name Updated" } ] } Интерфейс API: @GET("groups") Observable> getAllGroups(@Header("Authorization") String auth, @Header("Content-type") String contentType, @Header("Accept") String accept ); Метод, в котором получаю данные: private void getAllGroups() { String group = "Group1"; String credentials = "admin" + ":" + "admin"; final String basic = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP); String contentType = "application/json"; String accept = "application/json"; Subscription subscription = App.service.getAllGroups(basic, contentType, accept) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(groups -> { groupList.addAll(groups); }, throwable -> { Log.e("All group error", String.valueOf(throwable)); }); addSubscription(subscription); } Класс Group: public class Group { private String name; private String description; private String admins; private Member members; public Group(String name, String description, String admins, Member members) { this.name = name; this.description = description; this.admins = admins; this.members = members; } public Group(String name, String description) { this.name = name; this.description = description; } // getters setters }
Ответы
Ответ 1
Сервер присылает JSONObject, в котором JSONArray, а вы пытаетесь парсить как JSONArray. Должно быть как то так: public class GroupList { ArrayListgroup; //setters, getters } public class Group { private String name; private String description; ... }
Комментариев нет:
Отправить комментарий