这阵子在使用gson解析时遇到了点小麻烦,因为一直用的fastjson,最近一个项目里使用的gson,需要解析list集合,查资料都是使用TypeToken解决,相对比较麻烦,下面为大伙推荐一种简便的方法。
<Object> Object com.google.gson.Gson.fromJson(String json, Class<Object> classOfT) throws JsonSyntaxException 可以方便地帮我们把Json字符串转换成对应类型的对象。这里提供一个简单的例子,帮助大家理解。
Json字符串
{response: "success", demoList: [{id: "1", name: "jack", age: "21"},{id: "2", name: "joke", age: "22"},{id: "3", name: "pink", age: "23"}]}
Demo.java
public class Demo { private String id; private String name; private int age; }
如果要解析出来Demo的List,我们该怎么做呢?一般朋友查到网上的资料都是使用TypeToken的方法。
T com.google.gson.Gson.fromJson(String json, Class<T> classOfT) throws JsonSyntaxException
这个方法用起稍微有那么一点复杂,不过对于这个例子还不是很复杂,既然还是复杂,那就不讨论它了,这不是这儿的重点。
重点说说后面的方法:Gson.fromJson(String json, Class<Object> classOfT),因为我们需要Demo的集合,所以就封装一个DemoList类,用这个类接收fromJson()返回的结果,如下:
DemoList.java
public class DemoList {
private List<Demo> demoList;
public List<Demo> getDemoList() {
return demoList;
}
public void setDemoList(List<Demo> demoList) {
this.demoList = demoList;
}
}
接下来,在解析时候就可以一行代码搞定整个Json的反序列化操作,这时候才真正看到了Gson的强大之处,但值得注意的就是DemoList中红色的成员变量,它的名字应该是和Json字符串中集合的键是对应的,我就是因为不知道这点让我饱经磨难。
List<DemoList> list = new Gson().fromJson(json,DemoList.class);
是不是相当简单,不用fastJson一样,一级一级剥开了再处理,还要处理异常,但是个人还是感觉fastJson比较容易理解些,反正各有长短吧,以上纯属个人见解,大家习惯用谁谁,只希望能帮到遇到和我一样情况的朋友们。