Получаю такую ошибку 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
public class Group {
private String name;
private String description;
...
}
Комментариев нет:
Отправить комментарий