[置顶] Android利用谷歌Gson解析Json生成bean类详解

gson相对原生的jsonObject解析数据还是非常轻松的,鉴于fastJson存在不能区分大小写数据的bug,因此建议在项目中多使用Gson解析数据。

 {
    "reason": "查询成功",
    "result": {
        "title": "泰坦尼克号",
        "tag": "剧情 \/ 历史 \/ 爱情",
        "act": "莱昂纳多·迪卡普里奥 凯特·温丝莱特 比利·赞恩 凯西·贝茨 弗兰西丝·费舍 格劳瑞亚·斯图尔特 苏茜·爱米斯 比尔·帕克斯顿 伯纳德·希尔 维克多·加博 伊万·斯图尔特 詹姆斯·卡梅隆",
        "year": "1997",
        "rating": 9.1,
        "area": "美国",
        "dir": "詹姆斯·卡梅隆",
        "desc": "1912年4月10日,号称 “世界工业史上的奇迹”的豪华客轮泰坦尼克号开始了自己的处女航,从英国的南安普顿出发驶往美国纽约。富家少女罗丝(凯特•温丝莱特)与母亲及未婚夫卡尔坐上了头等舱;另一边,放荡不羁的少年画家杰克(莱昂纳多·迪卡普里奥)也在码头的一场赌博中赢得了下等舱的船票。\r\n罗丝厌倦了上流社会虚伪的生活,不愿嫁给卡尔,打算投海自尽,被杰克救起。很快,美丽活泼的罗丝与英俊开朗的杰克相爱,杰克带罗丝参加下等舱的舞会、为她画像,二人的感情逐渐升温。\r\n1912年4月14日,星期天晚上,一个风平浪静的夜晚。泰坦尼克号撞上了冰山,“永不沉没的”泰坦尼克号面临沉船的命运,罗丝和杰克刚萌芽的爱情也将经历生死的考验。",
        "cover": "http:\/\/p3.qhimg.com\/t01995eb1bddfa140df.jpg",
        "vdo_status": "play",
        "playlinks": {
            "youku": "http:\/\/v.youku.com\/v_show\/id_XMTA2OTA5MTQw.html?tpa=dW5pb25faWQ9MTAyMjEzXzEwMDAwN18wMV8wMQ"
        },
        "video_rec": [
            {
                "cover": "http:\/\/img6.pplive.cn\/2011\/07\/25\/14211145029_230X306.jpg",
                "detail_url": "http:\/\/www.360kan.com\/m\/haLiZ0L2RHb4Sx.html",
                "title": "西雅图夜未眠"
            },
            {
                "cover": "http:\/\/i2.hunantv.com\/p1\/20151021\/1620592710C.jpg_220x308.jpg",
                "detail_url": "http:\/\/www.360kan.com\/m\/g6bpYxH2QXb8Th.html",
                "title": "西雅图未眠夜"
            },
            {
                "cover": "http:\/\/j.www.haosou.com\/?u=http%3A%2F%2Fres.mfs.ykimg.com%2F050D00004FB2356B0000015BB400DCBD&m=cecee1&from=juhe&type=video&juid=JH969d5bab5503610429d3adf9f4a82f00&d=pc",
                "detail_url": "http:\/\/www.360kan.com\/m\/hKrkY0T6Rnj5TR.html",
                "title": "埃及艳后 美国版"
            },
            {
                "cover": "http:\/\/p8.qhimg.com\/t014dce61b8f6e5ba71.jpg",
                "detail_url": "http:\/\/www.360kan.com\/m\/gqTjZUP6QXH5UB.html",
                "title": "珍珠港"
            },
            {
                "cover": "http:\/\/p6.qhimg.com\/t01af969f00749604eb.jpg",
                "detail_url": "http:\/\/www.360kan.com\/m\/hqrnakX7RHH1SB.html",
                "title": "了不起的盖茨比"
            }
        ],
        "act_s": [
            {
                "name": "莱昂纳多·迪卡普里奥",
                "url": "http:\/\/baike.haosou.com\/doc\/2065592-2185267.html",
                "image": "http:\/\/i0.qhimg.com\/dmsmty\/120_110_100\/t0109ccd5c61022c945.jpg"
            },
            {
                "name": "凯特·温丝莱特",
                "url": "http:\/\/baike.haosou.com\/doc\/2436858-2576009.html",
                "image": "http:\/\/i8.qhimg.com\/dmsmty\/120_110_100\/t0114f276082e09b129.jpg"
            },
            {
                "name": "比利·赞恩",
                "url": "http:\/\/baike.haosou.com\/doc\/5424976-5663196.html",
                "image": "http:\/\/i5.qhimg.com\/dmsmty\/120_110_100\/t01d6e024651351ec54.jpg"
            }
        ]
    },
    "error_code": 0
}
下面生成Bean类,注意:{}的直接写内部类,[]的直接写成ArrayList的格式,里面的泛型写成内部类的格式。

public class SearchFilmResultBean {
    private String title; //闪电侠第一季
    private String tag;//科幻/动作
    private String act;//格兰特·古斯汀 埃涅·赫德森 汤姆·卡瓦纳夫
    private String year;//2014
    private String rating;  //7.8
    private String area;//美国
    private String dir;//大卫·努特尔
    private String desc;//《闪电侠》精彩看点:二次元超级英雄再登电视荧屏...
    private String cover;//http://i.gtimg.cn/qqlive/img/jpgcache/files/qqvideo/0/0l01jm9yobh4xo4.jpg
    private String vdo_status;//play
    private playlinks play_links;
    private List<video_rec> video_rec;
    private List<act_s> act_s;
    private String error_code;

    public static class playlinks {
        private String youku;
       /*此处省略setter getter*/
    }

    public static class video_rec {
        private String detail_url;
        private String cover;
        private String title;

        /*此处省略setter getter*/

    }


    public static class act_s {
        private String name;
        private String url;
        private String image;

        /*此处省略setter getter*/
    }

     /*此处省略setter getter、toString*/
}
然后 Gson gson = new Gson();

SearchFilmResultBean bean = gson.from(stringResult,SearchFilmResultBean.class);

Json数据就保存在了bean类了


你可能感兴趣的:([置顶] Android利用谷歌Gson解析Json生成bean类详解)