Получить Json Array в пост-модернизации - PullRequest
0 голосов
/ 09 июня 2019

У меня проблема, когда я хочу получить массив из ответа на сообщение

это мой пост

{
    "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;
}

Data.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);

Я хочу получить токен из моего пост-ответа.

Ответы [ 3 ]

1 голос
/ 09 июня 2019

Ваше значение данных - это массив токенов, а не сам объект

Создайте класс Token с полем Token String, затем замените класс Data следующим образом:

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

Чтобы получить токен, необходимо перебрать список

0 голосов
/ 09 июня 2019

используйте этот сайт для генерации правильного класса ответа в 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;
    }

    }
0 голосов
/ 09 июня 2019

Попробуйте изменить свой класс LoginModel, поскольку ваш объект данных ответа имеет тип Array

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;
}

}
...