使用 JSON 時,通常使用 Gson 將 JSON 資料轉換為類型化物件。但是,您可能會遇到這樣的情況:您需要解析的 ArrayList 項目的類型是在執行時使用反射動態決定的。在這種情況下,傳統的 TypeToken 方法可能會達不到要求。
例如,考慮以下程式碼:
Type typeOfObjectsList = new TypeToken<ArrayList<myClass>>() {}.getType(); List<myClass> objectsList = new Gson().fromJson(json, typeOfObjectsList);
此程式碼將 JSON 字串轉換為 myClass 物件清單。但是,如果 ArrayList 的項目類型應該動態決定怎麼辦?
為了實現這一點,您可以利用 Gson 版本 2.8.0 中引入的新功能:TypeToken.getParameterized。此方法可讓您建立具有指定參數化類型的 TypeToken。
使用方法如下:
private <T> Type setModelAndGetCorrespondingList2(Class<T> type) { Type typeOfObjectsListNew = TypeToken.getParameterized(ArrayList.class, type).getType(); return typeOfObjectsListNew; }
透過傳遞ArrayList 類別和動態項目類型類別類型作為參數對於TypeToken.getParameterized,您可以建立一個TypeToken,它表示具有所需項目類型的ArrayList。然後可以使用這個 TypeToken 作為 Gson.fromJson 的參數,以正確地將 JSON 資料解析為所需的清單類型。
以上是如何在運行時將 Gson TypeToken 與動態 ArrayList 項目類型結合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!