GSON解析json数据总结

来源:互联网 发布:穆勒plc手动编程 编辑:程序博客网 时间:2024/05/16 07:49

相信Gson跟json就不用在这解释了吧 直接开始实战吧

1.先附上要解析的json代码

{    "array": [           {            "username": "济南",             "recommend": 0,             "user_photo": "0",             "like": false,             "reply_cnt": 3,             "distance": "10m",             "add_date": "fuck",             "text": "明天去哈尔滨",             "stamp__name": null,             "place_id": 1,             "ptype": "d",             "like_cnt": "2",             "posting_image_url": "1",             "stamp_name": null,             "user": 0,             "stamp__id": null,             "dislike": "0",             "icon": "cate_icon_a_09",             "id": 0,             "mayor_cnt": 2,             "place_name": "肯德基老北京",        "place_level": 2        },         {            "username": "潍坊",             "recommend": 0,             "user_photo": "0",             "like": false,               "reply_cnt": 0,             "distance": "1m",             "add_date": "或许",             "text": "猴子",             "stamp__name": null,             "place_id": 7,             "ptype": "d",             "like_cnt": "0",             "posting_image_url": "0",             "stamp_name": null,             "user": 0,             "stamp__id": null,             "dislike": "0",             "icon": "cate_icon_b_05",             "id": 4,             "mayor_cnt": 2,             "place_name": "紫烟",        "place_level": 1        }     ],     "error": 0,     "next": true}

2.接下来就是创建bean文件 进行内部封装 便于解析

需要注意的是:
1、内部嵌套的类必须是static修饰的;
2、而且类里面的属性名必须跟Json字段里面的Key是一样的;

class NearDynamic {    private Boolean next=false;//①    private  int error;//②    private ArrayList<DynamicJ> array = new ArrayList<DynamicJ>();//③    public Boolean getNext() {        return next;    }    public void setNext(Boolean next) {        this.next = next;    }    public int getError() {        return error;    }    public void setError(int error) {        this.error = error;    }    public ArrayList<DynamicJ> getArray() {        return array;    }    public void setArray(ArrayList<DynamicJ> array) {        this.array = array;    }}

**从大的角度来看 json就是由这三部分组成,
然后其中 存在一个类型为Dynamic的List数组array,
所以接下来 创建 DynamicJ 这个类:**

class DynamicJ {    private String username;    private int recommend;    private String user_photo;    private Boolean like;    private int replycnt;    private String distance;    private String add_date;    private String text;    private String stamp__name;    private int place_id;    private int like_cnt;     private String ptype;       private String posting_image_url;    private String stamp_name;    private int user;    private String stamp__id;    private int dislike=0;    private String icon;    private int id;    private String place_name;    private int place_level;    private String mayor_cnt;    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public int getRecommend() {        return recommend;    }    public void setRecommend(int recommend) {        this.recommend = recommend;    }    public String getUser_photo() {        return user_photo;    }    public void setUser_photo(String user_photo) {        this.user_photo = user_photo;    }    public Boolean getLike() {        return like;    }    public void setLike(Boolean like) {        this.like = like;    }    public int getReplycnt() {        return replycnt;    }    public void setReplycnt(int replycnt) {        this.replycnt = replycnt;    }    public String getDistance() {        return distance;    }    public void setDistance(String distance) {        this.distance = distance;    }    public String getAdd_date() {        return add_date;    }    public void setAdd_date(String add_date) {        this.add_date = add_date;    }    public String getText() {        return text;    }    public void setText(String text) {        this.text = text;    }    public String getStamp__name() {        return stamp__name;    }    public void setStamp__name(String stamp__name) {        this.stamp__name = stamp__name;    }    public int getPlace_id() {        return place_id;    }    public void setPlace_id(int place_id) {        this.place_id = place_id;    }    public int getLike_cnt() {        return like_cnt;    }    public void setLike_cnt(int like_cnt) {        this.like_cnt = like_cnt;    }    public String getPtype() {        return ptype;    }    public void setPtype(String ptype) {        this.ptype = ptype;    }    public String getPosting_image_url() {        return posting_image_url;    }    public void setPosting_image_url(String posting_image_url) {        this.posting_image_url = posting_image_url;    }    public String getStamp_name() {        return stamp_name;    }    public void setStamp_name(String stamp_name) {        this.stamp_name = stamp_name;    }    public int getUser() {        return user;    }    public void setUser(int user) {        this.user = user;    }    public String getStamp__id() {        return stamp__id;    }    public void setStamp__id(String stamp__id) {        this.stamp__id = stamp__id;    }    public int getDislike() {        return dislike;    }    public void setDislike(int dislike) {        this.dislike = dislike;    }    public String getIcon() {        return icon;    }    public void setIcon(String icon) {        this.icon = icon;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getPlace_name() {        return place_name;    }    public void setPlace_name(String place_name) {        this.place_name = place_name;    }    public int getPlace_level() {        return place_level;    }    public void setPlace_level(int place_level) {        this.place_level = place_level;    }    public String getMayor_cnt() {        return mayor_cnt;    }    public void setMayor_cnt(String mayor_cnt) {        this.mayor_cnt = mayor_cnt;    }}

3.通过网络拿到json数据

/** * 通过XUtils工具 发送网络请求 * URL 为服务器json地址 * processData()为解析json数据的方法 * /private void getDataFromServer() {        // TODO Auto-generated method stub        HttpUtils utils = new HttpUtils();        utils.send(HttpMethod.GET, URL, new         RequestCallBack<String>() {            @Override            public void onSuccess(ResponseInfo<String> responseInfo) {                // TODO Auto-generated method stub                String result = responseInfo.result;// 获取服务器返回结果                System.out.println("服务器返回结果:" + result);                processData(result);//解析json数据的方法            }            @Override            public void onFailure(HttpException error, String msg) {                // TODO Auto-generated method stub                error.printStackTrace();                Toast.makeText(MainActivity.this, "拿到数据失败", Toast.LENGTH_SHORT)                        .show();            }        });    }

**从上面其实已经拿到json数据了 接下来就是Gson解析json数据的过程

4.Gson解析服务器返回的json数据

private void processData(String result) {        Gson gson = new Gson();//实例化Gson        NearDynamic mNearDynamic = gson.fromJson(result,   NearDynamic.class);        ArrayList<DynamicJ> dy = mNearDynamic.getArray();        String st  = dy.get(1).getUsername();        Toast.makeText(getApplicationContext(), st, 1).show();}

**首先由Json生成NearDynamic,然后得到list数组array中的列表数据
**dy.get(1) 表示拿到数组1济南 里面的数据 在此通过Toast打印一下 弹出的为 >>济南

1 0