您的位置:首页 > Web前端 > JavaScript

Gson解析Json

2013-08-21 11:39 204 查看
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对象

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: