обрабатывать ошибку модернизации как модель gson - PullRequest
0 голосов
/ 10 июня 2018

У меня есть веб-сервис для регистрации.и у меня есть успешный ответ для кода ответа 200, как это

{
    "data": {
        "email": "azadbar@yahoo.com"
    },
    "code": 201,
    "success": true
}

, и у меня есть ответ об ошибке с кодом 422, как это

{
    "message": "The given data was invalid.",
    "errors": {
        "email": [
            "The email has already been taken."
        ]
    }
}

, но когда у меня также есть проблема с паролем, ответошибка покажи мне вот так

{
    "message": "The given data was invalid.",
    "errors": {
        "email": [
            "The email must be a valid email address."
        ],
        "password": [
            "The password must be at least 6 characters.",
            "The password confirmation does not match."
        ]
    }
}

проблема в том, что какое-то поле какое-то время показывается, а какое-то время прошло.а также у нас есть некоторая модель ответа, и в интерфейсе модернизации у нас должен быть только один ответ, такой как RegisterResponse, в следующем примере

@POST("/api/v1/register")
Call<RegisterResponse> register(@Body RegisterRequest request);

как я могу обработать этот ответ?

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Вам необходимо создать pojo, которое означает класс модели с именем RegisterResponse , которое будет иметь свойства, которые вы получаете в своем ответе JSON.Итак, согласно вашему примеру, это будет выглядеть так:

Class RegisterResponse{
   private Data data;
   private String code;
   private Boolean success;
   private String  message;
   private Error errors;
}

Class Data{
  private String email;  
}

Class Error{
  private List<String> email;
  private List<String> password;
}

Теперь внутри каждого класса вам нужно создать метод получения и установки для каждого включенного свойства.Поэтому, когда приходит ответ, обработайте его соответствующим образом, что означает, что если он имеет значение null, установите для свойства значение null, иначе установите полученное значение для соответствующего свойства

0 голосов
/ 10 июня 2018

Вам необходимо создать модель со всеми возможными полями, и в зависимости от результата некоторые из них будут заполнены или будут нулевыми.

class Model{
    private Data data; 
    private int code; 
    private boolean success;
    private Errors errors;
    private String message;

    public isSuccess(){
        return success;
    }
    ....
}
...