Heim >Java >javaLernprogramm >Wie deserialisiere ich generische Sammlungen in Gson mithilfe von TypeToken?

Wie deserialisiere ich generische Sammlungen in Gson mithilfe von TypeToken?

Linda Hamilton
Linda HamiltonOriginal
2024-12-07 03:57:19752Durchsuche

How to Deserialize Generic Collections in Gson Using TypeToken?

Generische Sammlungen mit Gson deserialisieren

Sie möchten ein Listenobjekt mit Google Gson deserialisieren, stoßen jedoch aufgrund von auf Herausforderungen generische Typen.

Alternative Ansatz

Der Fehler, mit dem Sie konfrontiert sind, deutet darauf hin, dass new List() {} die geerbten abstrakten Methoden nicht implementiert. Stattdessen können Sie TypeToken verwenden, um den generischen Typ zur Laufzeit anzugeben:

Type listType = new TypeToken<List<MyClass>>() {}.getType();
MyClass mc = new Gson().fromJson(result, listType);

Ausnahmebehandlung

Die NullPointerException, auf die Sie stoßen, deutet darauf hin, dass der Listentyp dies nicht ist richtig formatiert. Überprüfen Sie Folgendes:

  • Stellen Sie sicher, dass das Ergebnis nicht null ist.
  • Debuggen Sie den listType, um zu überprüfen, ob der parametrisierte Typ korrekt eingestellt ist.

TypeToken-Erklärung

Mit der TypeToken-Klasse können Sie generische Typen zur Kompilierungszeit erfassen und sie zur Laufzeit darstellen Typen. Seine anonyme Unterklasse kapselt die spezifischen Typinformationen und ermöglicht es Gson, das entsprechende Objekt korrekt zu deserialisieren.

Referenz für die Zukunft Entwickler

  • https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/TypeToken.html
  • https://stackoverflow.com/questions/12112101/gson-and-multiple-type-parameters-in-generic-class

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich generische Sammlungen in Gson mithilfe von TypeToken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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