具有動態ArrayList項類型的Gson TypeToken
在Gson中,TypeToken是一個實用程式類,可用於為未知類型建立類型資訊在運作時。它通常用於將 JSON 字串反序列化為 Java 物件。
使用清單時,可以在執行時動態定義 ArrayList 的項目類型。這可以使用反射來完成。
問題:
以下程式碼嘗試為具有動態項目類型的清單建立TypeToken:
private <T> Type setModelAndGetCorrespondingList2(Class<T> type) { Type typeOfObjectsListNew = new TypeToken<ArrayList<T>>() {}.getType(); return typeOfObjectsListNew; }
但是,由於類型不匹配,這種方法會在將JSON 字串轉換為物件時導致SQLException
解決方案:
從Gson 2.8.0 開始,可以使用TypeToken#getParameterized(Type rawType, Type... typeArguments) 來建立TypeType#getParameterized(Type rawType, Type... typeArguments) 來建立TypeType 具有動態專案類型Token具有動態專案類型Token具有動態專案的列表。解決方案是:
Type typeOfObjectsListNew = TypeToken.getParameterized(ArrayList.class, myClass).getType();
這會為具有指定動態項目類型 (myClass) 的 ArrayList 建立 TypeToken。然後,您可以使用 getType() 檢索用於反序列化的類型資訊。
以上是如何為具有動態項目類型的 ArrayList 建立 Gson TypeToken?的詳細內容。更多資訊請關注PHP中文網其他相關文章!