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
DDDoriginal
2024-12-15 06:09:14938parcourir

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);

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!

Déclaration:
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