Maison > Java > javaDidacticiel > Comment désérialiser les collections génériques dans Gson à l'aide de TypeToken ?

Comment désérialiser les collections génériques dans Gson à l'aide de TypeToken ?

Linda Hamilton
Libérer: 2024-12-07 03:57:19
original
801 Les gens l'ont consulté

How to Deserialize Generic Collections in Gson Using TypeToken?

Désérialiser des collections génériques avec Gson

Vous cherchez à désérialiser un objet de liste à l'aide de Google Gson, mais vous rencontrez des difficultés dues à types génériques.

Alternative Approche

L'erreur à laquelle vous êtes confronté suggère que new List() {} n'implémente pas les méthodes abstraites héritées. Au lieu de cela, vous pouvez utiliser TypeToken pour spécifier le type générique au moment de l'exécution :

Type listType = new TypeToken<List<MyClass>>() {}.getType();
MyClass mc = new Gson().fromJson(result, listType);
Copier après la connexion

Gestion des exceptions

L'exception NullPointerException que vous rencontrez suggère que le type de liste n'est pas correctement formaté. Vérifiez les éléments suivants :

  • Assurez-vous que le résultat n'est pas nul.
  • Déboguez le listType pour vérifier que le type paramétré est correctement défini.

Explication TypeToken

La classe TypeToken vous permet de capturer des types génériques au moment de la compilation et de les représenter comme types d'exécution. Sa sous-classe anonyme encapsule les informations de type spécifiques, permettant à Gson de désérialiser correctement l'objet correspondant.

Référence pour le futur Développeurs

  • 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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal