Gson 泛型

package com.shzd.fans.gsondemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private TextView tv1;
    private TextView tv2;
    private TextView tv3;
    private String str1 = "{\"success\":true,\"data\":{\"averageStarLevel\":4.7,\"remarkCount\":10}}";
    private String str2 = "{\"success\":true,\"data\":{\"page\":10,\"pageCount\":29,\"list\":[{\"starLevel\":4,\"remarkCotnent\":\"評價方未及時作出評價,系統默認滿意!\",\"remarkTime\":\"2013-02-27 07:21:48\",\"explainContent\":\"\",\"postMemberId\":\"y**f\",\"tpLogoURL\":\"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png\"},{\"starLevel\":4,\"remarkCotnent\":\"評價方未及時作出評價,系統默認滿意!\",\"remarkTime\":\"2013-02-27 07:21:48\",\"explainContent\":\"\",\"postMemberId\":\"y**f\",\"tpLogoURL\":\"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png\"}],\"statistics\":{\"star5\":20,\"star4\":40,\"star3\":30,\"star2\":10,\"star1\":0}}}";
    private String str3 = "{\"success\":true,\"data\":[{\"starLevel\":4,\"remarkCotnent\":\"評價方未及時作出評價,系統默認滿意!\",\"remarkTime\":\"2013-02-27 07:21:48\",\"explainContent\":\"\",\"postMemberId\":\"y**f\",\"tpLogoURL\":\"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png\"},{\"starLevel\":4,\"remarkCotnent\":\"評價方未及時作出評價,系統默認滿意!\",\"remarkTime\":\"2013-02-27 07:21:48\",\"explainContent\":\"\",\"postMemberId\":\"y**f\",\"tpLogoURL\":\"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png\"}]}";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv1 = (TextView) findViewById(R.id.text1);
        tv2 = (TextView) findViewById(R.id.text22);
        tv3 = (TextView) findViewById(R.id.text3);

        getJson1();

    }

    private void getJson1() {
        
        CommonJson cmj = CommonJson.fromJson(str1, Result1.DataBean.class);
        Result1.DataBean dataBean = (Result1.DataBean) cmj.getData();
        tv1.setText(dataBean.getAverageStarLevel() + "\n" + dataBean.getRemarkCount() + "");

        CommonJson cmj2 = CommonJson.fromJson(str2, Result2.DataBean.class);
        Result2.DataBean dataBean2 = (Result2.DataBean) cmj2.getData();
        Result2.DataBean.StatisticsBean sb = dataBean2.getStatistics();
        tv2.setText(sb.getStar1() + "" + "" + sb.getStar2() + "" + sb.getStar3() + "" + sb.getStar4() + sb.getStar5());
        
    }

}

  

package com.shzd.fans.gsondemo;

import com.google.gson.Gson;

import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

/**
 * 第一種:
 * {"success":true,"data":{"averageStarLevel":4.7,"remarkCount":10}}
 * 第二種:
 * {"success":true,"data":{"page":10,"pageCount":29,"list":[{"starLevel":4,"remarkCotnent":"評價方未及時作出評價,系統默認滿意!","remarkTime":"2013-02-27 07:21:48","explainContent":"","postMemberId":"y**f","tpLogoURL":"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png"},{"starLevel":4,"remarkCotnent":"評價方未及時作出評價,系統默認滿意!","remarkTime":"2013-02-27 07:21:48","explainContent":"","postMemberId":"y**f","tpLogoURL":"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png"}],"statistics":{"star5":20,"star4":40,"star3":30,"star2":10,"star1":0}}}
 * 第三種:
 * {"success":true,"data":[{"starLevel":4,"remarkCotnent":"評價方未及時作出評價,系統默認滿意!","remarkTime":"2013-02-27 07:21:48","explainContent":"","postMemberId":"y**f","tpLogoURL":"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png"},{"starLevel":4,"remarkCotnent":"評價方未及時作出評價,系統默認滿意!","remarkTime":"2013-02-27 07:21:48","explainContent":"","postMemberId":"y**f","tpLogoURL":"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png"}]}
 * Created by fans on 2017/2/22.
 */

public class CommonJson<T> implements Serializable {
    private boolean success;
    private T data;

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public T getData() {
        return data;
    }

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

    public static CommonJson fromJson(String json, Class clazz) {
        Gson gson = new Gson();
        Type objectType = type(CommonJson.class, clazz);
        return gson.fromJson(json, objectType);
    }

    public String toJson(Class<T> clazz) {
        Gson gson = new Gson();
        Type objectType = type(CommonJson.class, clazz);
        return gson.toJson(this, objectType);
    }

    static ParameterizedType type(final Class raw, final Type... args) {
        return new ParameterizedType() {
            public Type getRawType() {
                return raw;
            }

            public Type[] getActualTypeArguments() {
                return args;
            }

            public Type getOwnerType() {
                return null;
            }
        };
    }
}

  

package com.shzd.fans.gsondemo;

import java.io.Serializable;

/**
 * Created by fans on 2017/2/22.
 */

public class Result1 implements Serializable {

    /**
     * success : true
     * data : {"averageStarLevel":4.7,"remarkCount":10}
     */

    private boolean success;
    private DataBean data;

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public DataBean getData() {
        return data;
    }

    public void setData(DataBean data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * averageStarLevel : 4.7
         * remarkCount : 10
         */

        private double averageStarLevel;
        private int remarkCount;

        public double getAverageStarLevel() {
            return averageStarLevel;
        }

        public void setAverageStarLevel(double averageStarLevel) {
            this.averageStarLevel = averageStarLevel;
        }

        public int getRemarkCount() {
            return remarkCount;
        }

        public void setRemarkCount(int remarkCount) {
            this.remarkCount = remarkCount;
        }
    }
}

  

package com.shzd.fans.gsondemo;

import java.io.Serializable;
import java.util.List;

/**
 * Created by fans on 2017/2/22.
 */

public class Result2 implements Serializable {

    /**
     * success : true
     * data : {"page":10,"pageCount":29,"list":[{"starLevel":4,"remarkCotnent":"評價方未及時作出評價,系統默認滿意!","remarkTime":"2013-02-27 07:21:48","explainContent":"","postMemberId":"y**f","tpLogoURL":"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png"},{"starLevel":4,"remarkCotnent":"評價方未及時作出評價,系統默認滿意!","remarkTime":"2013-02-27 07:21:48","explainContent":"","postMemberId":"y**f","tpLogoURL":"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png"}],"statistics":{"star5":20,"star4":40,"star3":30,"star2":10,"star1":0}}
     */

    private boolean success;
    private DataBean data;

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public DataBean getData() {
        return data;
    }

    public void setData(DataBean data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * page : 10
         * pageCount : 29
         * list : [{"starLevel":4,"remarkCotnent":"評價方未及時作出評價,系統默認滿意!","remarkTime":"2013-02-27 07:21:48","explainContent":"","postMemberId":"y**f","tpLogoURL":"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png"},{"starLevel":4,"remarkCotnent":"評價方未及時作出評價,系統默認滿意!","remarkTime":"2013-02-27 07:21:48","explainContent":"","postMemberId":"y**f","tpLogoURL":"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png"}]
         * statistics : {"star5":20,"star4":40,"star3":30,"star2":10,"star1":0}
         */

        private int page;
        private int pageCount;
        private StatisticsBean statistics;
        private List<ListBean> list;

        public int getPage() {
            return page;
        }

        public void setPage(int page) {
            this.page = page;
        }

        public int getPageCount() {
            return pageCount;
        }

        public void setPageCount(int pageCount) {
            this.pageCount = pageCount;
        }

        public StatisticsBean getStatistics() {
            return statistics;
        }

        public void setStatistics(StatisticsBean statistics) {
            this.statistics = statistics;
        }

        public List<ListBean> getList() {
            return list;
        }

        public void setList(List<ListBean> list) {
            this.list = list;
        }

        public static class StatisticsBean {
            /**
             * star5 : 20
             * star4 : 40
             * star3 : 30
             * star2 : 10
             * star1 : 0
             */

            private int star5;
            private int star4;
            private int star3;
            private int star2;
            private int star1;

            public int getStar5() {
                return star5;
            }

            public void setStar5(int star5) {
                this.star5 = star5;
            }

            public int getStar4() {
                return star4;
            }

            public void setStar4(int star4) {
                this.star4 = star4;
            }

            public int getStar3() {
                return star3;
            }

            public void setStar3(int star3) {
                this.star3 = star3;
            }

            public int getStar2() {
                return star2;
            }

            public void setStar2(int star2) {
                this.star2 = star2;
            }

            public int getStar1() {
                return star1;
            }

            public void setStar1(int star1) {
                this.star1 = star1;
            }
        }

        public static class ListBean {
            /**
             * starLevel : 4
             * remarkCotnent : 評價方未及時作出評價,系統默認滿意!
             * remarkTime : 2013-02-27 07:21:48
             * explainContent :
             * postMemberId : y**f
             * tpLogoURL : http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png
             */

            private int starLevel;
            private String remarkCotnent;
            private String remarkTime;
            private String explainContent;
            private String postMemberId;
            private String tpLogoURL;

            public int getStarLevel() {
                return starLevel;
            }

            public void setStarLevel(int starLevel) {
                this.starLevel = starLevel;
            }

            public String getRemarkCotnent() {
                return remarkCotnent;
            }

            public void setRemarkCotnent(String remarkCotnent) {
                this.remarkCotnent = remarkCotnent;
            }

            public String getRemarkTime() {
                return remarkTime;
            }

            public void setRemarkTime(String remarkTime) {
                this.remarkTime = remarkTime;
            }

            public String getExplainContent() {
                return explainContent;
            }

            public void setExplainContent(String explainContent) {
                this.explainContent = explainContent;
            }

            public String getPostMemberId() {
                return postMemberId;
            }

            public void setPostMemberId(String postMemberId) {
                this.postMemberId = postMemberId;
            }

            public String getTpLogoURL() {
                return tpLogoURL;
            }

            public void setTpLogoURL(String tpLogoURL) {
                this.tpLogoURL = tpLogoURL;
            }
        }
    }
}
相關文章
相關標籤/搜索