Gson解析Json

来源:互联网 发布:怎么下载cdrx4软件 编辑:程序博客网 时间:2024/05/31 06:22

Gson

         Google提供的开源项目Gson,它是一种提供Json解析的类库,它相对于老版本的Json而言,不仅仅在解析速度上,而且在解析所消耗的内存上都有一个质的飞跃,当然,阿里巴巴提供的类库fastgson跟它速度应该不相上下,只是底层的实现不同而已。

         当然在使用前,你的下载好google提供的Google提供的Gson包,当然在使用前,你还得知道一个小知识点,在Gson中我们要定义一个bean类型,这个类型里面封装了一个Gson对象所有的字段值,这样它才可以保存,这个类是必须有的。

         Gson有两个很重要的方法,一个是toJson,一个是fromJson,看名字就知道,ToJson就是将我们的bean类型,转换为我们需要的Json对象。而fromJson就是将我们的已知的Json转换为我们的bean类型。

一、ToJson

        user u=new user("zhangsan",19);

        Gson g=new Gson();

        System.out.println(g.toJson(l));

//输出结果是{name:’zhangsan’age:19}

上述是一种基本的使用用法,通过ToJson,我们可以将一个bean对象保存为一个Json对象。当然,我们也可以通过一个链表,将我们的一个list对象封装到一个Json对象中去。

List<user> l=new LinkedList<user>();

        user u=new user("zhangsan",19);

        l.add(u);

        user u2=new user("zhangsan2",19);

        l.add(u2);

        Gson g=new Gson();

        System.out.println(g.toJson(l));

//输出结果就是[{name:’zhangsan’,age:19},{name:’zhangsan2’,age:19}]

         在这里大家需要注意,对于Json而言,[]代表一个数组,数组中的每一个元素代表一个Json对象,{}代表一个对象,也就是是一个Json对象,当然它还可以实现更复杂的操作,这边就不给大家演示了

二、FromJson

user u=new user();

        Gson g=new Gson();

        u=g.fromJson("{name:'zhangsan',age:12}", user.class);

        System.out.println(u.getName()+"     "+u.getAge());

//输出结果是zhangsan 12

         上述实现了简单的从Json对象中获取数据,并将它保存到一个bean对象中的列子,其中比较重要的就是参数设置,这个例子十分的简单,我们现在创建一个Json它不止包含一组数据,而是包含多组,然后我们通过一个list来保存,在做这个例子之前,我们需要了解一个小知识点。AndroidGson解析中提供了一个特别的类,TypeToken,它实现了获取泛型类型的功能,使用方法Type =TypeToken(泛型){}.gettype();将会返回一个reflect包下的type对象,这就是我们fromJson所需要的type类型

user u=new user();

        Gson g=new Gson();

        String s="[{name:'zhangsan',age:12},{name:'lisi',age:12}]";

        Type lt=new TypeToken<List<user>>(){}.getType();

        List<user> l=g.fromJson(s,lt);

        for(user u1:l){

            System.out.println(u1.getName()+"     "+u1.getAge());

        }

//打印结果是zhangsan 12

//lisi  12

当然通过Gson你还可以解析更加有深层次的,比如几个对象嵌套的类型,使用规则也跟上述的没有多大的差别。所以后续就不给介绍了,在后续附上Gson重要方法。

<T> T àfromJson(String jsonclass<T> clasofT) 

将我们的json数据解析到Bean类型中,T就是我们的类型

String àtoJson(Object o)

将我们的object内容解析成为一个Json对象