【问题标题】:Get Json Array in Post Retrofit在后期改造中获取 Json 数组
【发布时间】:2019-06-09 18:07:57
【问题描述】:

当我想从发布响应中检索数组时遇到问题

这是我的帖子

{
    "user_email": "xxxx@gmail.com",
    "user_password": "12345"
}

这是我的帖子回复,我想获取令牌值

{
    "status": true,
    "code": 200,
    "message": "Request Succeded: Login success",
    "data": [
        {
            "token": "bsWIVXTLuud2ZbdnUvI8037fT7D0t7MTvusBrNjskah"
        }
    ]
}

这是我的模型 LoginModel.java

@SerializedName("data")
@Expose
private Data data ;

public Data getData() {
    return data;
}

public void setData (Data data) {
    this.data = data;
}

public LoginModel(String user_email, String user_password) {
    this.user_email = user_email;
    this.user_password = user_password;
}

数据.java

public String getToken() {
    return token;
}

public void setToken(String token) {
   this.token = token;
}

我之前尝试过的代码,文本视图什么都不显示

LoginModel loginModelresponse = response.body();

String token = loginModelresponse.getData().getToken();

textView.setText(token);

我想从我的帖子回复中获取令牌。

【问题讨论】:

    标签: java android json retrofit


    【解决方案1】:

    您的数据值是一个标记数组,而不是对象本身

    创建一个带有token String字段的Token类,然后像这样替换Data类

    @SerializedName("data")
    @Expose
    private List<Token> data ;
    

    要获取令牌,必须迭代列表

    【讨论】:

    • 如何迭代列表?
    【解决方案2】:

    尝试更改您的 LoginModel 类,因为您的响应数据对象是数组类型

    public class LoginModel {
    @SerializedName("status")
    @Expose
    private Boolean status;
    @SerializedName("code")
    @Expose
    private Integer code;
    @SerializedName("message")
    @Expose
    private String message;
    @SerializedName("data")
    @Expose
    private List<Data> data = null;
    
    public Boolean getStatus() {
    return status;
    }
    
    public void setStatus(Boolean status) {
    this.status = status;
    }
    
    public Integer getCode() {
    return code;
    }
    
     public void setCode(Integer code) {
     this.code = code;
     }
    
     public String getMessage() {
    return message;
     }
    
    public void setMessage(String message) {
    this.message = message;
    }
    
    public List<Data> getData() {
    return data;
    }
    
     public void setData(List<Data> data) {
     this.data = data;
    }
    
    }
    

    【讨论】:

      【解决方案3】:

      使用this站点在java中生成正确的响应类

       public class Tokens implements Serializable
          {
      
          @SerializedName("token")
          @Expose
          private String token;
          private final static long serialVersionUID = 1577013820593763604L;
      
          public String getToken() {
          return token;
          }
      
          public void setToken(String token) {
          this.token = token;
          }
      
          }
        //  -----------------------------------com.example.Response.java-----------
      
          package com.example;
      
          import java.io.Serializable;
          import java.util.List;
          import com.google.gson.annotations.Expose;
          import com.google.gson.annotations.SerializedName;
      
          public class Response implements Serializable
          {
      
          @SerializedName("status")
          @Expose
          private boolean status;
          @SerializedName("code")
          @Expose
          private long code;
          @SerializedName("message")
          @Expose
          private String message;
          @SerializedName("data")
          @Expose
          private List<Tokens> data = null;
          private final static long serialVersionUID = -3002290394951662690L;
      
          public boolean isStatus() {
          return status;
          }
      
          public void setStatus(boolean status) {
          this.status = status;
          }
      
          public long getCode() {
          return code;
          }
      
          public void setCode(long code) {
          this.code = code;
          }
      
          public String getMessage() {
          return message;
          }
      
          public void setMessage(String message) {
          this.message = message;
          }
      
          public List<Tokens> getData() {
          return data;
          }
      
          public void setData(List<Tokens> data) {
          this.data = data;
          }
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-23
        • 2018-07-02
        • 2017-07-02
        • 2020-06-06
        • 1970-01-01
        • 1970-01-01
        • 2015-11-16
        • 2016-05-09
        相关资源
        最近更新 更多