這陣子在使用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;
}java
public void setDemoList(List<Demo> demoList) {
this.demoList = demoList;
}
}
接下來,在解析時候就能夠一行代碼搞定整個Json的反序列化操做,這時候才真正看到了Gson的強大之處,但值得注意的就是DemoList中紅色的成員變量,它的名字應該是和Json字符串中集合的鍵是對應的,我就是由於不知道這點讓我飽經磨難。
DemoList demo = new Gson().fromJson(json,DemoList.class);
List<Demo> list = demo.getDemoList();
是否是至關簡單,不用fastJson同樣,一級一級剝開了再處理,還要處理異常,可是我的仍是感受fastJson比較容易理解些,反正各有長短吧,以上純屬我的看法,你們習慣用誰誰,只但願能幫到遇到和我同樣狀況的朋友們。json