ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

gson 解析泛型 数据处理 BaseClass<T>

2021-06-12 12:31:14  阅读:179  来源: 互联网

标签:return String int void public 泛型 BaseClass gson page


APP网络请求一般返回 json数据 如下:

{
   "id":2200,
    "status":1,
    "member":2,
    "usreid":2200,
    "alias":"QQ 804031885",
    "name":"张风英",
    "sex":1,
    "msg":"登录成功欢迎回来"
}

这种数据比较好处理 创建一个实体类 Module.class

public class Module {
    private int id;
    private int status;
    private int member;
    private int usreid;
    private String alias;
    private String name;
    private int sex;
    private String msg;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public int getMember() {
        return member;
    }

    public void setMember(int member) {
        this.member = member;
    }

    public int getUsreid() {
        return usreid;
    }

    public void setUsreid(int usreid) {
        this.usreid = usreid;
    }

    public String getAlias() {
        return alias;
    }

    public void setAlias(String alias) {
        this.alias = alias;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

 json转为实体类对像

Module module= new Gson().fromJson(json,Module.class);

这样就能得到我们需要的对像内容。

 

有的返回json多种数据格式 我们不可能每一种数据写一个请求的接口数据, 所以需要使用到具体的泛型类来处理数据了。 如下返回的JSON

{
    "total":30,
    "per_page":20,
    "current_page":1,
    "last_page":2,
    "data":[
        {
            "id":42,
            "title":"\u5348\u591cDj",
            "tag":"\u5348\u591cDj",
            "picture":"",
            "url":"",
            "type":0,
            "status":1,
            "datetime":"1623428508"
        },
        {
            "id":40,
            "title":"\u670b\u53cb\u7684\u9152 Dj - DJ\u821e\u66f2",
            "tag":"DJ\u821e\u66f2",
            "picture":"",
            "url":"https:\/\/mp3.9ku.com\/mp3\/470\/469902.mp3",
            "type":0,
            "status":1,
            "datetime":"1623428513"
        }
    ]
}

创建一个实体类misc.class

public class misc implements Serializable {
    private String id;
    private String title;
    private String tag;
    private String url;
    private String picture;
    private int type;
    private int status;
    private String datetime;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTag() {
        return tag;
    }

    public void setTag(String tag) {
        this.tag = tag;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getPicture() {
        return picture;
    }

    public void setPicture(String picture) {
        this.picture = picture;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getDatetime() {
        return datetime;
    }

    public void setDatetime(String datetime) {
        this.datetime = datetime;
    }
}

 然后创建一个泛型实体类解析数据  BaseClass<T> 

public class BaseClass<T>{
    private int total;
    private int per_page;
    private int current_page;
    private int last_page;
    private List<T> data;

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getPer_page() {
        return per_page;
    }

    public void setPer_page(int per_page) {
        this.per_page = per_page;
    }

    public int getCurrent_page() {
        return current_page;
    }

    public void setCurrent_page(int current_page) {
        this.current_page = current_page;
    }

    public int getLast_page() {
        return last_page;
    }

    public void setLast_page(int last_page) {
        this.last_page = last_page;
    }

    public List<T> getData() {
        return data;
    }

    public void setData(List<T> data) {
        this.data = data;
    }
}

 通过下面的代码轻松获取到我们所需要的对像

Type objectType = new TypeToken<BaseClass<misc>>(){}.getType();
BaseClass  baseClass = new Gson().fromJson(date, objectType);
List<misc> data = baseClass.getData();

拿到对像数组了,下面就可以实现自己的业务逻辑了。

 

标签:return,String,int,void,public,泛型,BaseClass,gson,page
来源: https://blog.csdn.net/vip58l/article/details/117842565

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有