Android 改造中的两种不同响应
我正在使用reformation和POJO发送一个注册屏幕,该屏幕通常有效,但根据结果是否有效,答案有两个不同的对象。它们是:Android 改造中的两种不同响应,android,json,retrofit2,pojo,Android,Json,Retrofit2,Pojo,我正在使用reformation和POJO发送一个注册屏幕,该屏幕通常有效,但根据结果是否有效,答案有两个不同的对象。它们是: { "errors": { "nome": [ "Campo obrigatório" ], "sobrenome": [ "Campo obrigatório" ] } } 以及: 还有我的POJO: public class PostCa
{
"errors": {
"nome": [
"Campo obrigatório"
],
"sobrenome": [
"Campo obrigatório"
]
}
}
以及:
还有我的POJO:
public class PostCadastro {
@SerializedName("nome")
@Expose
private String nome;
@SerializedName("sobrenome")
@Expose
private String sobrenome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSobrenome() {
return sobrenome;
}
public void setSobrenome(String sobrenome) {
this.sobrenome = sobrenome;
}
如何处理这两个响应?我假设PostAdastro是用于接收API响应的对象。在这种情况下,您没有名为“errors”的变量或名为“success”的变量来接收正确的响应
响应对象中的变量名需要与JSON树中的第一个节点匹配。在这种情况下,nome和sobrenome是“errors”和“success”的子节点,因此改型将在响应对象中搜索名为“errors”或“success”的实例变量,但找不到它,并且PostAdastro对象中的nome和sobrenome字段将为空。改型响应理解
@SerializedName
注释
public class PostCadastroResponse {
@SerializedName("succes")
@Nullable
PostCadastro successResponse;
@SerializedName("errors")
@Nullable
PostCadastro errorResponse;
}
如果出现错误,则错误将不为空,否则为成功
但是,当服务器返回正确的代码和错误消息时,更干净的体系结构就可以了。您可以在
响应
类中使用标准改装
的isSuccessful,如果您有两个响应的成功状态代码,您可以创建:
@SerializedName(value = "success", alternate = {"errors"})
@Expose
private PostCadastro postCadastro;
public PostCadastro getPostCadastro() {
return postCadastro;
}
public void setPostCadastro(PostCadastro postCadastro) {
this.postCadastro = postCadastro;
}
public static class PostCadastro {
@SerializedName("nome")
@Expose
private List<String> nome;
@SerializedName("sobrenome")
@Expose
private List<String> sobrenome;
public List<String> getNome() {
return nome;
}
public void setNome(List<String> nome) {
this.nome = nome;
}
public List<String> getSobrenome() {
return sobrenome;
}
public void setSobrenome(List<String> sobrenome) {
this.sobrenome = sobrenome;
}
}
@SerializedName(value=“success”,alternate={“errors”})
@暴露
私人邮政卡;邮政卡;
公共PostAdastro getPostAdastro(){
返回后adastro;
}
公共无效setPostAdastro(PostAdastro PostAdastro){
this.postCadastro=postCadastro;
}
公共静态类后适配器{
@序列化名称(“nome”)
@暴露
非公开名单;
@序列化名称(“SobreName”)
@暴露
私有列表sobrenome;
公共列表getNome(){
返回nome;
}
公共无效集合名称(列表名称){
this.nome=nome;
}
公共列表getSobreName(){
返回sobrenome;
}
公共无效设置SobreName(列表SobreName){
this.sobrenome=sobrenome;
}
}
也可能备用
属性适用于@SerializedName
。
@SerializedName(value = "success", alternate = {"errors"})
@Expose
private PostCadastro postCadastro;
public PostCadastro getPostCadastro() {
return postCadastro;
}
public void setPostCadastro(PostCadastro postCadastro) {
this.postCadastro = postCadastro;
}
public static class PostCadastro {
@SerializedName("nome")
@Expose
private List<String> nome;
@SerializedName("sobrenome")
@Expose
private List<String> sobrenome;
public List<String> getNome() {
return nome;
}
public void setNome(List<String> nome) {
this.nome = nome;
}
public List<String> getSobrenome() {
return sobrenome;
}
public void setSobrenome(List<String> sobrenome) {
this.sobrenome = sobrenome;
}
}