使用Gson結合泛型類靈活解析JSON資料

2021-07-09 08:27:38 字數 1568 閱讀 9821

一般比較規範的後端json返回資料,會遵循一些指定的json格式,比如:

錯誤:

正確:

,

"err": null

}

那麼我們可以定義乙個通用資料類,比如叫做:uniapiresult

public class uniapiresult

public void setstatus(int status)

public string geterr()

public void seterr(string err)

public t getdata()

public void setdata(t data)

}

然後,我們在需要解析資料特定的資料時,只需要根據特定的資料型別定義乙個model就可以了,如:

public class goodsinfomodel 

public void setprice(int price)

public string getname()

public void setname(string name)

public string gettype()

public void settype(string type)

public int getamount()

public void setamount(int amount)

public string getsummary()

public void setsummary(string summary)

public string getpicture()

public void setpicture(string picture)

public boolean gethot()

public void sethot(boolean hot)

public int getsales()

public void setsales(int sales)

}

那麼,我們在解析資料的時候,用如下方法即可:

/**

* 資料解析

* * @param jsonstr json字串

* @return uniapiresult資料物件

*/public uniapiresultparsejson(string jsonstr) .gettype();

return gson.fromjson(jsonstr, jsontype);

}

值得注意的是,typetoken的用法,typetoken是gson庫中包含的一種獲取json型別的類,可以傳入泛型來獲取型別,而gettype或getclass這種方法是獲取不到泛型型別的,所以gson解析泛型型別資料的關鍵就是typetoken,這個方法解析完成後,即可返回uniapiresult型別的物件,通過getdata()方法,就可以獲取到goodsinfomodel型別的物件資料了,是不是很省事了呢?

使用GSON對帶泛型的物件解析

可以使用public t fromjson string json,type typeoft 方法對帶泛型的json串進行解析 new typetoken gettype 這裡typetoken 泛型引數既可以是單個物件型別,也可以是list帶泛型list複雜型別 habby類 public cla...

泛型結構使用大全(泛型類 泛型介面)

1 泛型類可能有多個引數,此時應將多個引數一起放到尖括號內,比如 2 泛型類的構造器如下 public genericclass 錯誤示例 public genericclass 3 例項化後,操作原來泛型位置的結構必須與指定的泛型型別一致。4 泛型不同的引用不能互相賦值。儘管在編譯時arrayli...

泛型類繼承全解析

泛型類之間的繼承 普通的繼承規則,包括成員的隱藏 過載和訪問限制等,原則上也都適用於泛型類之間的繼承。但由於泛型類是抽象的而非具體的資料型別,所以泛型類的繼承問題是乙個既有趣又容易產生混淆的問題。因為基類和派生類可能只有乙個是泛型類,也可能二者都是,本節將分別對這3種情況進行詳細說明。為了解說上的方...