android开发学习之Gson解析

作者: zzj丶 | 来源:发表于2017-01-13 17:01 被阅读978次

    最近在学习一些新的知识,试着用MVP模式写项目。以前在项目中使用的都是JsonObject和JsonArray来解析Json数据,确实麻烦。下面一起来学习下Gson的基本使用:

    一、推荐大家一个Android studio里面的工具:进入setting——Plugins中安装
    使用方法:在建好的实体类里面右击选中generate--Gsonformat;将Json数据方法 format一下 Ok 搞定!

    二、Gson解析:Json数据:

    {
        "reason": "成功的返回",
        "result": {
            "stat": "1",
            "data": [
                {
                    "uniquekey": "6c4caa0c3ba6e05e2a272892af43c00e",
                    "title": "杨幂的发际线再也回不去了么?网友吐槽像半秃",
                    "date": "2017-01-05 11:03",
                    "category": "yule",
                    "author_name": "腾讯娱乐",
                    "url": "http://mini.eastday.com/mobile/170105110355287.html?qid=juheshuju",
                    "thumbnail_pic_s": "http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_1_mwpm_03200403.jpeg",
                    "thumbnail_pic_s02": "http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_2_mwpm_03200403.jpeg",
                    "thumbnail_pic_s03": "http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_3_mwpm_03200403.jpeg"
                }
            ]
        }
    }
    

    以上面的数据为例,使用工具将数据封装为实体类;

    /**
     * 新闻实体类
     * Created by zzj on 2017/1/13.
     */
    public class NewsDesignResEntry extends BaseEntity {
    
        /**
         * reason : 成功的返回
         * result : {"stat":"1","data":[{"uniquekey":"6c4caa0c3ba6e05e2a272892af43c00e","title":"杨幂的发际线再也回不去了么?网友吐槽像半秃","date":"2017-01-05 11:03","category":"yule","author_name":"腾讯娱乐","url":"http://mini.eastday.com/mobile/170105110355287.html?qid=juheshuju","thumbnail_pic_s":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_1_mwpm_03200403.jpeg","thumbnail_pic_s02":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_2_mwpm_03200403.jpeg","thumbnail_pic_s03":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_3_mwpm_03200403.jpeg"}]}
         */
    
        private String reason;
        /**
         * stat : 1
         * data : [{"uniquekey":"6c4caa0c3ba6e05e2a272892af43c00e","title":"杨幂的发际线再也回不去了么?网友吐槽像半秃","date":"2017-01-05 11:03","category":"yule","author_name":"腾讯娱乐","url":"http://mini.eastday.com/mobile/170105110355287.html?qid=juheshuju","thumbnail_pic_s":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_1_mwpm_03200403.jpeg","thumbnail_pic_s02":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_2_mwpm_03200403.jpeg","thumbnail_pic_s03":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_3_mwpm_03200403.jpeg"}]
         */
    
        private ResultBean result;
    
        public String getReason() {
            return reason;
        }
    
        public void setReason(String reason) {
            this.reason = reason;
        }
    
        public ResultBean getResult() {
            return result;
        }
    
        public void setResult(ResultBean result) {
            this.result = result;
        }
    
        public static class ResultBean {
            private String stat;
            /**
             * uniquekey : 6c4caa0c3ba6e05e2a272892af43c00e
             * title : 杨幂的发际线再也回不去了么?网友吐槽像半秃
             * date : 2017-01-05 11:03
             * category : yule
             * author_name : 腾讯娱乐
             * url : http://mini.eastday.com/mobile/170105110355287.html?qid=juheshuju
             * thumbnail_pic_s : http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_1_mwpm_03200403.jpeg
             * thumbnail_pic_s02 : http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_2_mwpm_03200403.jpeg
             * thumbnail_pic_s03 : http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_3_mwpm_03200403.jpeg
             */
    
            private List<DataBean> data;
    
            public String getStat() {
                return stat;
            }
    
            public void setStat(String stat) {
                this.stat = stat;
            }
    
            public List<DataBean> getData() {
                return data;
            }
    
            public void setData(List<DataBean> data) {
                this.data = data;
            }
    
            public static class DataBean {
                private String uniquekey;
                private String title;
                private String date;
                private String category;
                private String author_name;
                private String url;
                private String thumbnail_pic_s;
                private String thumbnail_pic_s02;
                private String thumbnail_pic_s03;
    
                public String getUniquekey() {
                    return uniquekey;
                }
    
                public void setUniquekey(String uniquekey) {
                    this.uniquekey = uniquekey;
                }
    
                public String getTitle() {
                    return title;
                }
    
                public void setTitle(String title) {
                    this.title = title;
                }
    
                public String getDate() {
                    return date;
                }
    
                public void setDate(String date) {
                    this.date = date;
                }
    
                public String getCategory() {
                    return category;
                }
    
                public void setCategory(String category) {
                    this.category = category;
                }
    
                public String getAuthor_name() {
                    return author_name;
                }
    
                public void setAuthor_name(String author_name) {
                    this.author_name = author_name;
                }
    
                public String getUrl() {
                    return url;
                }
    
                public void setUrl(String url) {
                    this.url = url;
                }
    
                public String getThumbnail_pic_s() {
                    return thumbnail_pic_s;
                }
    
                public void setThumbnail_pic_s(String thumbnail_pic_s) {
                    this.thumbnail_pic_s = thumbnail_pic_s;
                }
    
                public String getThumbnail_pic_s02() {
                    return thumbnail_pic_s02;
                }
    
                public void setThumbnail_pic_s02(String thumbnail_pic_s02) {
                    this.thumbnail_pic_s02 = thumbnail_pic_s02;
                }
    
                public String getThumbnail_pic_s03() {
                    return thumbnail_pic_s03;
                }
    
                public void setThumbnail_pic_s03(String thumbnail_pic_s03) {
                    this.thumbnail_pic_s03 = thumbnail_pic_s03;
                }
            }
        }
    }
    

    请求解析:

    public List<NewsDesignResEntry.ResultBean.DataBean> designResDatas = new ArrayList<>();
    
              @Override
                        public void onSuccess(String s, Call call, Response response) {
                           Tools.sectionLog("okgolog","--json---"+s);
                            //实例化Gson
                            Gson gson = new Gson();
    //                        Type listType = new TypeToken<List<NewsDesignResEntry>>(){}.getType();
                            //将Json数据转换成我们封装的对象
                            NewsDesignResEntry entry = gson.fromJson(s, NewsDesignResEntry.class);
                            //通过对象获取我们需要的数据,进行显示
                            designResDatas = entry.getResult().getData();
    //                        designResDatas.add(entry);
                            view.loadListSuccess(1,designResDatas);
                        }
                    });
    

    注意:刚使用时,利用Type从中直接获取时,出现错误:

    多条数据时不能从中直接获取,需要一步一步向下取。

    相关文章

      网友评论

        本文标题:android开发学习之Gson解析

        本文链接:https://www.haomeiwen.com/subject/nfusbttx.html