Страницы

Поиск по вопросам

понедельник, 27 мая 2019 г.

java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT (Retrofit 2)

Получаю такую ошибку 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 }


Ответ

Сервер присылает JSONObject, в котором JSONArray, а вы пытаетесь парсить как JSONArray. Должно быть как то так:
public class GroupList { ArrayList group; //setters, getters }

public class Group {
private String name; private String description;
... }

Комментариев нет:

Отправить комментарий