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来保存,在做这个例子之前,我们需要了解一个小知识点。Android在Gson解析中提供了一个特别的类,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 json,class<T> clasofT) 将我们的json数据解析到Bean类型中,T就是我们的类型 String àtoJson(Object o) 将我们的object内容解析成为一个Json对象 |