Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。——维基百科
相对于较为传统的Json解析来说,Gson在解析速度和所使用的内存在有着明显的优势。
Gson的应用主要为toJson与fromJson两个转换函数,而在使用这种对象转换之前需先创建好对象的类以及其成员才能成功的将JSON字符串成功转换成相对应的对象。
toJson方法就是讲对象类里面的内容转换为Json内容,fromJson就是从Json解析出一个类对象。
/**
* Bean类,内容和JSon数据类型一一对应
*/
public class Info {
private int mId;
private String mName;
public int getId() {
return mId;
}
public void setId(int id) {
this.mId = id;
}
public String getName() {
return mName;
}
public void setName(String name) {
this.mName = name;
}
public Info(int id, String name) {
this.mId = id;
this.mName = name;
}
public String getInfo() {
return "mId = " + this.mId + " mName = " + mName;
}
}
void testGson() {
Info info = new Info(123, "shawn");
Gson gson = new Gson();
String gsonString = gson.toJson(info);
System.out.println(gsonString);
Info info2 = gson.fromJson(gsonString, Info.class);
System.out.println(info2.getInfo());
}
测试结果为:
{"mId":123,"mName":"shawn"}
mId = 123 mName = shawn
Gson还可以承担一些复杂的操作,比如通过集合插入一组数据,以及从Json解析出一组数据。
void testGsonList() {
List<Info> infos = new ArrayList<Info>();
infos.add(new Info(111, "Tom"));
infos.add(new Info(112, "Jack"));
infos.add(new Info(113, "Jane"));
Gson gson = new Gson();
String gsonString = gson.toJson(infos);
System.out.println(gsonString);
Type lt = new TypeToken<List<Info>>() {
}.getType();
List<Info> infos2 = gson.fromJson(gsonString, lt);
for (Info info2 : infos2)
System.out.println(info2.getInfo());
}
测试结果为:
[{"mId":111,"mName":"Tom"},{"mId":112,"mName":"Jack"},{"mId":113,"mName":"Jane"}]
mId = 111 mName = Tom
mId = 112 mName = Jack
mId = 113 mName = Jane