首頁 >Java >java教程 >如何在運行時將 Gson TypeToken 與動態 ArrayList 項目類型結合?

如何在運行時將 Gson TypeToken 與動態 ArrayList 項目類型結合?

Patricia Arquette
Patricia Arquette原創
2024-12-05 17:16:11354瀏覽

How to Use Gson TypeToken with Dynamic ArrayList Item Types at Runtime?

運行時具有動態 ArrayList 項目類型的 Gson TypeToken

使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn