Maison > Java > javaDidacticiel > Comment TypeReference de Jackson peut-il résoudre les problèmes de désérialisation de classe générique ?

Comment TypeReference de Jackson peut-il résoudre les problèmes de désérialisation de classe générique ?

Barbara Streisand
Libérer: 2024-12-06 14:09:16
original
261 Les gens l'ont consulté

How Can Jackson's TypeReference Solve Generic Class Deserialization Issues?

Jackson - Utilisation de génériques pour la désérialisation

Dans le domaine du traitement des données, la désérialisation joue un rôle crucial dans la conversion des données sérialisées en objets. Jackson, une bibliothèque Java populaire, offre un support robuste pour la désérialisation, y compris la possibilité de gérer des classes génériques.

Désérialisation de classe générique

Lorsqu'il s'agit de classes génériques telles que Data< T>, où T représente un paramètre de type, la désérialisation nécessite de spécifier l'argument de type réel. L'approche traditionnelle implique l'utilisation du type Data.class, mais celle-ci ne parvient pas à capturer les informations génériques.

Solution TypeReference

Jackson fournit une solution via sa classe TypeReference. En créant un objet TypeReference et en spécifiant le type générique, vous pouvez informer Jackson du type attendu.

Exemple de code

Supposons que nous ayons un objet Data et une chaîne JSON qui doit être désérialisée en une instance de cette classe :

class Data<T> {
    int found;
    Class<T> hits
}

public static void main(String[] args) {
    String jsonString = "...";

    ObjectMapper mapper = new ObjectMapper();
    Data<String> deserializedData = mapper.readValue(jsonString, 
                                               new TypeReference<Data<String>>() { });
}
Copier après la connexion

Explication

Dans cet exemple, nous créons un TypeReference pour Data< Chaîne> et transmettez-le comme deuxième argument à la méthode readValue. Cela demande à Jackson d'attendre un objet Data avec String comme argument de type générique.

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