Мне нужно использовать бэкэнд, который возвращает мне это:
{
"ok": true,
"data": [
{
"id": 0,
"name": "Intempestivo"
},
{
"id": 1,
"name": "Vacaciones"
}
}
Но в других случаях он возвращает мне что-то вроде этого:
{
"ok": true,
"data": [
{
"id": 10,
"startDate": "2020-05-29T12:00:00.000Z",
"endDate": "2020-05-30T12:00:00.000Z",
"status": "En revision",
"type": "Vacaciones"
},
{
"id": 11,
"startDate": "2020-05-29T12:00:00.000Z",
"endDate": "2020-05-30T12:00:00.000Z",
"status": "En revision",
"type": "Vacaciones"
}
]
}
Как я могу обернуть эти ответы в Общий класс ответа, в котором единственным изменением может быть объект POJO данных.
public class GeneralResponse<T> {
@SerializedName("data")
private WrapperData<T> wrapperData;
@SerializedName("ok")
private boolean ok;
@SerializedName("error")
private Error error;
}
И данные оболочки:
public class WrapperData<T> {
private T dataResponse;
public WrapperData(T POJOResponse) {
this.dataResponse = POJOResponse;
}
public T getDataResponse() {
return dataResponse;
}
}
Интерфейс модернизации имеет такой метод:
@GET("permission_types/")
Call<GeneralResponse<ArrayList<PermissionType>>> getPermissionTypesWrapped();
Но когда я делаю запрос, я получил следующее исключение:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 'n' column 'n' path $.data