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
Linda Hamiltonoriginal
2024-12-07 03:57:19752parcourir

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

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!

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