我通过改型调用了API以注册用户,当用户输入一个已经存在或格式错误的电话号码或电子邮件时,我想处理401错误。
Gson gson = new Gson();
Type type = new TypeToken<ErrorResponse>() {}.getType();
ErrorResponse errorResponse = gson.fromJson(response.errorBody().charStream(),type);
Log.d("err", errorResponse.getMessage().getPhone().get(0))
以上是我的代码,仅显示单个实体(例如电话)。如何从json响应中获取电话和电子邮件的错误消息
{
"status": false,
"message": {
"email": [
"The email has already been taken."
],
"phone_no": [
"The phone no has already been taken."
]
}
}
这是Json响应
public class ErrorResponse {
@SerializedName("success")
@Expose
private Boolean success;
@SerializedName("message")
@Expose
private Message message;
public Boolean getSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
public Message getMessage() {
return message;
}
public void setMessage(Message message) {
this.message = message;
}
}
然后错误响应
答案 0 :(得分:0)
当您从服务器发回json时,我会将json更改为以下格式。这将允许使用Gson或其他json转换器进行非常简单的转换。
这将为您提供一个 ErrorResponse 对象,该对象将具有成功的布尔值以及一个 List ,该列表将包含您在messages数组中返回的内容。如果需要,也可以将其称为“ 错误”。您只需在 ErrorResponse 类中更新注释。
{
"success": false,
"messages": [{
"type": "email",
"message": "The email has already been taken."
}, {
"type": "phone_no",
"message": "The phone no has already been taken."
}]
}
然后,我将创建以下Java类:
ErrorResponse类
public class ErrorResponse {
@SerializedName("status")
@Expose
private boolean status;
@SerializedName("message")
@Expose
private List<Message> messages;
...
}
消息类
public final class Message {
@SerializedName("type")
@Expose
private String type;
@SerializedName("message")
@Expose
private String messages;
...
}