Heim > Java > javaLernprogramm > Wie erstelle ich ein Gson TypeToken für eine ArrayList mit einem dynamischen Elementtyp?

Wie erstelle ich ein Gson TypeToken für eine ArrayList mit einem dynamischen Elementtyp?

Susan Sarandon
Freigeben: 2024-12-11 13:45:10
Original
1006 Leute haben es durchsucht

How to Create a Gson TypeToken for an ArrayList with a Dynamic Item Type?

Gson TypeToken mit dynamischem ArrayList-Elementtyp

In Gson ist TypeToken eine Dienstprogrammklasse, die zum Erstellen von Typinformationen für unbekannte Typen verwendet werden kann zur Laufzeit. Es wird häufig verwendet, um JSON-Strings in Java-Objekte zu deserialisieren.

Beim Arbeiten mit Listen ist es möglich, den Elementtyp der ArrayList zur Laufzeit dynamisch zu definieren. Dies kann mithilfe von Reflektion erfolgen.

Problem:

Der folgende Code versucht, ein TypeToken für eine Liste mit einem dynamischen Elementtyp zu erstellen:

private <T> Type setModelAndGetCorrespondingList2(Class<T> type) {
    Type typeOfObjectsListNew = new TypeToken<ArrayList<T>>() {}.getType();
    return typeOfObjectsListNew;
}
Nach dem Login kopieren

Dieser Ansatz führt jedoch aufgrund einer Nichtübereinstimmung im Typ zu einer SQLException beim Konvertieren der JSON-Zeichenfolge in ein Objekt Definitionen.

Lösung:

Ab Gson 2.8.0 können Sie TypeToken#getParameterized(Type rawType, Type... typeArguments) verwenden, um das TypeToken für zu erstellen eine Liste mit einem dynamischen Elementtyp. Die Lösung ist:

Type typeOfObjectsListNew = TypeToken.getParameterized(ArrayList.class, myClass).getType();
Nach dem Login kopieren

Dadurch wird ein TypeToken für eine ArrayList mit dem angegebenen dynamischen Elementtyp (myClass) erstellt. Anschließend können Sie getType() verwenden, um die Typinformationen zur Verwendung bei der Deserialisierung abzurufen.

Das obige ist der detaillierte Inhalt vonWie erstelle ich ein Gson TypeToken für eine ArrayList mit einem dynamischen Elementtyp?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage