Maison > Java > javaDidacticiel > Comment désérialiser une liste générique avec Gson ?

Comment désérialiser une liste générique avec Gson ?

DDD
Libérer: 2024-12-15 06:09:14
original
941 Les gens l'ont consulté

How to Deserialize a Generic List with Gson?

Désérialiser une liste générique avec Gson

Lorsque vous utilisez Gson pour transférer un objet de liste, vous pouvez rencontrer des défis lorsque vous traitez des types génériques. Cet article fournit un guide complet pour désérialiser des listes génériques avec Gson.

Problème :
Tenter de désérialiser une liste à l'aide de new List().getClass() entraîne un erreur ou un correctif complexe avec de nombreuses méthodes stubs.

Solution :
Pour désérialiser correctement une liste générique, utilisez la classe TypeToken comme suit :

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

Cette approche élimine le besoin de getClass () invocation, fournissant une réponse plus concise et efficace solution.

Explication :
TypeToken capture le type générique au moment de la compilation. La sous-classe anonyme créée lors de l'instanciation garantit que les informations de type correctes sont conservées lorsqu'elles sont transmises à la méthode fromJson de Gson. Cela garantit une désérialisation appropriée de votre liste générique.

Remarques supplémentaires :

  • L'objet Type peut représenter n'importe quel type Java, y compris les instanciations paramétrées de types génériques, surmontant limitations d'effacement de type.
  • TypeToken doit capturer les types entièrement connus au moment de la compilation ; il ne peut pas capturer les paramètres de type génériques (le nouveau TypeToken>() {}.getType() n'est pas autorisé). >

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal