Имеется метод в сервисе:
@DELETE("api/rest/dir/{dir_path}/")
Call<BaseResponse> delete(@Path("dir_path") String dirPath);
В виде ответа могут придти разные JSON.
{
"dir": { "status": "success" }
}
или
{
"dir": {
"error_code": "{error number}",
"error_message": "{description or error}"
}
}
Соответственно имеются классы:
public class BaseResponse {
}
public class Error extends BaseResponse {
@SerializedName("error_code")
private int errorCode;
@SerializedName("error_message")
private String errorMessage;
public class Status extends BaseResponse {
@SerializedName("status")
private String status;
Как правильно обрабатывать ответы? А то всегда в response находится BaseResponse и не приводится ни к одному из двух наследующих его типов.
Классы менять не нужно, класс остаётся один и тот же, только в случае успешного ответа в status
возвращается success, а ваши error
будут null
, и наоборот в случае ответа с ошибкой - status == null
, а в error
будут данные:
public class AwesomeResponse extends ErrorResponse {
@Nullable
@SerializedName("status")
public String status;
// сколько угодно полей
}
public class ErrorResponse {
@Nullable
@SerializedName("error_code")
public Integer errorCode;
@Nullable
@SerializedName("error_message")
public String errorMessage;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как включить выделение строк в TableViewПри нажатии мышкой на строку она не выделяется
Часто возникает потребность работы с Json, в частности его чтения и парсингаВ Java обычно ты знаешь с каким типом переменных работаешь, а при...
Можно ли сразу настроить авторизацию чтобы не запрашивать авторизацию в пользователей, а создавать календари, события на своем аккаунте?
Не понятно каким образом сравнивать значение зарплаты в методе