#java #android #retrofit2
Имеется метод в сервисе:
@DELETE("api/rest/dir/{dir_path}/")
Call 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
и не приводится ни к одному из двух наследующих его типов.
Ответы
Ответ 1
Классы менять не нужно, класс остаётся один и тот же, только в случае успешного ответа в 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; }
Комментариев нет:
Отправить комментарий