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从中直接获取时,出现错误:

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

相关文章

  • Gson序列化那些事

    Android开发中会经常解析json,使用retrofit框架常用gson解析json。Gson有一定的容错机制...

  • android开发学习之Gson解析

    最近在学习一些新的知识,试着用MVP模式写项目。以前在项目中使用的都是JsonObject和JsonArray来解...

  • Android 库 Gson

    【Android 库 Gson】 引用: ★Gson 解析教程★★★ Gson的入门使用Gson全解析(上)-Gs...

  • Gson,不规范json的反序列化

      Gson是Java或Android开发中常用的一个json解析库,尤其是在Android下基本上是必备的。但是...

  • GSON 解析 JSON

    GSON JSON 介绍 Gson 下载 Gson 解析 和 格式化Gson 格式化Gson 解析 解析asset...

  • 12.Gson

    Gson是谷歌发布的一个json解析框架.android studio使用:

  • 2018-01-11

    Gson解析复杂json数据常用的两种解析方式 Gson gson = new Gson(); 1.gson.fr...

  • 原生org.json实现JSON数据与对象之间的转化

    在开发 SDK 时为了避免兼容性问题,不依赖三方解析库fastjson或者gson;这时我们需要使用android...

  • flutter json解析

    在移动端开发的时候json解析是我们非常常用的一项技术,在android平台开发的时候只需要借助Gson就能做到快...

  • Json解析,上了GsonFormat的当!

    对于android中的json解析相信不少人,都是采用了Gson.既然使用了Gson,肯定有人使用了GsonFor...

网友评论

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

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