Как разобрать ответ JSON с помощью библиотеки Gson в Android? - PullRequest
0 голосов
/ 19 декабря 2018

У меня api его ответ такой:

{
"0": "_serialize",
"1": [
    "login"
],
"users": {
    "token": "aaaaa",
    "message": "login successful."
    }
  }

Как я могу разобрать это в Android с помощью Gson?

Ответы [ 4 ]

0 голосов
/ 19 декабря 2018

Создайте Pojo своего Json.Вы можете сделать это с помощью многих ресурсов, доступных онлайн, таких как , или , .

. Теперь используйте формат ниже.

Gson gson = new Gson();
MyPojo myPojo = new MyPojo();
Type collectionType = new TypeToken<MyPojo>() {
                    }.getType();
myPojo = gson.fromJson(responseJson,
                            collectionType);

Надеюсь, это поможет.

0 голосов
/ 19 декабря 2018

Создание класса модели из ответа

    public void onResponse(String response) {   
    JSONObject jsonObject = null;
    try {
        jsonObject = new JSONObject(response);

        YourModelClass objModel = gson.fromJson(jsonObject.getJSONObject("data").toString(), YourModelClass.class);

 } catch (JSONException e) {
    e.printStackTrace();
  }
}
0 голосов
/ 19 декабря 2018

используйте gson и сопоставьте ваш ответ с классом Java Model.

Это будет ваш класс модели ->

User.java Model class.

import java.io.Serializable;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import org.apache.commons.lang.builder.ToStringBuilder;

public class Users implements Serializable
{

    @SerializedName("token")
    @Expose
    private String token;
    @SerializedName("message")
    @Expose
    private String message;
    private final static long serialVersionUID = 3387741697269012981L;

    /**
     * No args constructor for use in serialization
     * 
     */
    public Users() {
    }

    /**
     * 
     * @param message
     * @param token
     */
    public Users(String token, String message) {
        super();
        this.token = token;
        this.message = message;
    }

    public String getToken() {
        return token;
    }

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

    public Users withToken(String token) {
        this.token = token;
        return this;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Users withMessage(String message) {
        this.message = message;
        return this;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this).append("token", token).append("message", message).toString();
    }

}

thisваш корневой / родительский класс, с которого начинается синтаксический анализ.

import java.io.Serializable;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import org.apache.commons.lang.builder.ToStringBuilder;

public class Root implements Serializable
{

    @SerializedName("0")
    @Expose
    private String _0;
    @SerializedName("1")
    @Expose
    private List<String> _1 = null;
    @SerializedName("users")
    @Expose
    private Users users;
    private final static long serialVersionUID = 5880229946098431789L;

    /**
     * No args constructor for use in serialization
     * 
     */
    public Example() {
    }

    /**
     * 
     * @param users
     * @param _0
     * @param _1
     */
    public Example(String _0, List<String> _1, Users users) {
        super();
        this._0 = _0;
        this._1 = _1;
        this.users = users;
    }

    public String get0() {
        return _0;
    }

    public void set0(String _0) {
        this._0 = _0;
    }

    public Example with0(String _0) {
        this._0 = _0;
        return this;
    }

    public List<String> get1() {
        return _1;
    }

    public void set1(List<String> _1) {
        this._1 = _1;
    }

    public Example with1(List<String> _1) {
        this._1 = _1;
        return this;
    }

    public Users getUsers() {
        return users;
    }

    public void setUsers(Users users) {
        this.users = users;
    }

    public Example withUsers(Users users) {
        this.users = users;
        return this;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this).append("_0", _0).append("_1", _1).append("users", users).toString();
    }

}

теперь в коде, где вы получаете Json map json для этого корневого / родительского класса, с которого начинается синтаксический анализ.

Root root = new Gson().fromJson(/*put your json response variable here*/, Root.class);

и использовать корневой объект для извлечения / установки любых данных с помощью открытых методов get.

0 голосов
/ 19 декабря 2018

Прежде всего сделайте модель классов из вашего json , используя такие инструменты, как this .Просто скопируйте свой json и получите объекты.

Предположим, вы вызываете класс Model

Затем используйте этот code, чтобы получить object из вашего json.

String json = "that-json";
Model m = gson.fromJson(json, Model.class);

Подробнее о Руководства Гсона .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...