处理作为gson模型的改造错误

时间:2018-06-10 10:08:54

标签: android error-handling retrofit2 gson

我有一个注册的网络服务。我对此响应代码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 :(得分:1)

您需要创建一个 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;
}

现在在每个类中,您需要为包含的每个属性创建getter和setter。 因此,当响应到来时,相应地处理它意味着如果它为null,则将该属性设置为null,否则设置相应属性的接收值

答案 1 :(得分:-1)

您需要创建一个包含所有可能字段的模型,并根据结果将某些字段填充或为空。

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

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