Heim >Java >javaLernprogramm >Wie deserialisiere ich eine generische Liste mit Gson?

Wie deserialisiere ich eine generische Liste mit Gson?

DDD
DDDOriginal
2024-12-15 06:09:14939Durchsuche

How to Deserialize a Generic List with Gson?

Deserialisieren einer generischen Liste mit Gson

Wenn Sie Gson zum Übertragen eines Listenobjekts verwenden, kann es beim Umgang mit generischen Typen zu Herausforderungen kommen. Dieser Artikel bietet eine umfassende Anleitung zum Deserialisieren generischer Listen mit Gson.

Problem:
Der Versuch, eine Liste mit new List().getClass() zu deserialisieren, führt zu einem Fehler oder eine komplexe Lösung mit zahlreichen Methoden Stubs.

Lösung:
Um eine generische Liste korrekt zu deserialisieren, verwenden Sie die TypeToken-Klasse wie folgt:

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

Dieser Ansatz macht die getClass überflüssig ()-Aufruf, der eine prägnantere und effektivere Bereitstellung ermöglicht Lösung.

Erklärung:
TypeToken erfasst den generischen Typ zur Kompilierungszeit. Die während der Instanziierung erstellte anonyme Unterklasse stellt sicher, dass die korrekten Typinformationen beibehalten werden, wenn sie an die fromJson-Methode von Gson übergeben werden. Dadurch wird die ordnungsgemäße Deserialisierung Ihrer generischen Liste sichergestellt.

Zusätzliche Hinweise:

  • Das Type-Objekt kann jeden Java-Typ darstellen, einschließlich parametrisierter Instanziierungen generischer Typen Einschränkungen beim Löschen von Typen.
  • TypeToken muss Typen erfassen, die zur Kompilierungszeit vollständig bekannt sind; Es können keine generischen Typparameter erfasst werden (neues TypeToken>() {}.getType() ist nicht zulässig).
  • Für TypeToken 类,请参阅其文档。

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich eine generische Liste mit Gson?. 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