利用Gson快捷解析Json数据

来源:互联网 发布:windows 获取窗口大小 编辑:程序博客网 时间:2024/05/20 18:55

与服务器交互获取数据,Json格式是比较普遍和简单的一种形式,下面就来利用Gson来快捷的解析数据:
1):在android项目libs文件夹下导入json-jar.jar(详细导包不再啰嗦)
2):封装工具类JsonUtil.java

package com.xingfu.util;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.List;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.reflect.TypeToken;/** * © 2015   * 名称:JsonUtil.java  * 描述:json处理类. * * @author 孤狼 * @version v1.0 * @date:2015-01-17 下午01:52:13 * */public class JsonUtil {    /**     *      * 描述:将对象转化为json.     * @param list     * @return     */    public static String toJson(Object src) {        String json = null;        try {            GsonBuilder gsonb = new GsonBuilder();            Gson gson = gsonb.create();            json = gson.toJson(src);        } catch (Exception e) {            e.printStackTrace();        }        return json;    }    /**     *      * 描述:将列表转化为json.     * @param list     * @return     */    public static String toJson(List<?> list) {        String json = null;        try {            GsonBuilder gsonb = new GsonBuilder();            Gson gson = gsonb.create();            json = gson.toJson(list);        } catch (Exception e) {            e.printStackTrace();        }        return json;    }    /**     *      * 描述:将json转化为列表.     * @param json     * @param typeToken new TypeToken<ArrayList<?>>() {};     * @return     */    public static List<?> fromJson(String json,TypeToken typeToken) {        List<?> list = null;        try {            GsonBuilder gsonb = new GsonBuilder();            Gson gson = gsonb.create();            Type type = typeToken.getType();            list = gson.fromJson(json,type);        } catch (Exception e) {            e.printStackTrace();        }        return list;    }    /**     *      * 描述:将json转化为对象.     * @param json     * @param clazz     * @return     */    public static Object fromJson(String json,Class clazz) {        Object obj = null;        try {            GsonBuilder gsonb = new GsonBuilder();            Gson gson = gsonb.create();            obj = gson.fromJson(json,clazz);        } catch (Exception e) {            e.printStackTrace();        }        return obj;    }}

3):使用实例:
一.解析成object对象
a》Json数据:json

{    "user_id": 520,    "user_name": "幸福",    "user_age": 21,    "user_logo": "http://www.xingfu.com//5456sdgdf5544.jpg",    "user_class": "一(三)班",    "user_school": "中国社会科学院"}

b》封装实体类:UserBean.java与Json数据字段一致

public class UserBran {    public int user_id;    public String user_name;    public int user_age;    public String user_logo;    public String user_class;    public String user_school;}

c》解析数据:
UserBean userBean=JsonUtil.fromJson(json.toString,UserBean.class);
d》填充数据:
tv.setText(userBean.user_name);等等
二..解析成List

[{    "user_id": 520,    "user_name": "幸福",    "user_age": 21,    "user_logo": "http://www.xingfu.com//5456sdgdf5544.jpg",    "user_class": "一(三)班",    "user_school": "中国社会科学院"},{    "user_id": 220,    "user_name": "幸运",    "user_age": 25,    "user_logo": "http://www.xingfu.com//gdfgdgsdgdf5544.jpg",    "user_class": "一(二)班",    "user_school": "中国社会科学院"},{    "user_id": 440,    "user_name": "天真",    "user_age": 41,    "user_logo": "http://www.xingfu.com//fg56sdgdf5544.jpg",    "user_class": "一(四)班",    "user_school": "中国社会科学院"}]

b》解析数据:

TypeToken typeToken=new TypeToken<ArrayList<UserBean>>() {};ArrayList<UserBean> list=JsonUtil.fromJson(json.toString,typeToken);

c》填充数据:
listView.setAdapter(new CommunAdapter(this,list));等等
4):复杂数据的解析
a》Json嵌套的数据,json

{    "user_id": 520,    "user_name": "幸福",    "user_age": 21,    "user_logo": "http://www.xingfu.com//5456sdgdf5544.jpg",    "user_class": "一(三)班",    "user_school": "中国社会科学院",     "data": {        "number": 200,        "love_gril": "丽丽"    }}

b》:只需把实体类封装成:

public class UserBran {    public int user_id;    public String user_name;    public int user_age;    public String user_logo;    public String user_class;    public String user_school;    public MoreData data;    public class MoreData {        public int number;        public String love_gril;    }}

c》解析数据:

UserBean userBean=JsonUtil.fromJson(json.toString,UserBean.class);

这种解析的方式比传统的解析方便简洁:
总结步骤:
1.把获取的Json数据转化为String类型
2.封装实体类(所有用到的字段和Json中字段一致)
3.调用工具类,解析数据
4.填充数据到界面

demo 实例稍候上传………

0 0
原创粉丝点击