Maison > Java > javaDidacticiel > le corps du texte

Comment créer et enregistrer des sérialiseurs personnalisés dans Jackson pour une sérialisation JSON sur mesure ?

DDD
Libérer: 2024-11-26 01:11:10
original
932 Les gens l'ont consulté

How to Create and Register Custom Serializers in Jackson for Tailored JSON Serialization?

Comment utiliser des sérialiseurs personnalisés à Jackson

À Jackson, l'utilisation de sérialiseurs personnalisés permet une sérialisation JSON personnalisée pour des classes spécifiques.

Création d'un sérialiseur personnalisé

Pour sérialiser des objets du Classe d'articles, créez un sérialiseur personnalisé :

public class ItemSerializer extends JsonSerializer<Item> {

    @Override
    public void serialize(Item value, JsonGenerator jgen,
                          SerializerProvider provider) throws IOException,
                                                             JsonProcessingException {
        jgen.writeStartObject();
        jgen.writeNumberField("id", value.id);
        jgen.writeNumberField("itemNr", value.itemNr);
        jgen.writeNumberField("createdBy", value.createdBy.id);
        jgen.writeEndObject();
    }
}
Copier après la connexion

Enregistrement du sérialiseur personnalisé

Après avoir créé le sérialiseur, il doit être enregistré auprès de Jackson :

SimpleModule simpleModule = new SimpleModule("SimpleModule",
                                              new Version(1,0,0,null));
simpleModule.addSerializer(new ItemSerializer());
mapper.registerModule(simpleModule);
Copier après la connexion

Gestion de l'enregistrement du type

Jackson génère une erreur en raison d'un manque gestion des types. Résolvez ce problème en gérant explicitement les types :

public class ItemSerializer extends JsonSerializer<Item> {

    @Override
    public void serialize(Item value, JsonGenerator jgen,
                          SerializerProvider provider) throws IOException,
                                                             JsonProcessingException {
        // ... (Serialization code)
    }

    @Override
    public Class<Item> handledType() {
        return Item.class;
    }
}
Copier après la connexion

Sérialisation avec Jackson

Avec le sérialiseur personnalisé enregistré, sérialisez l'objet Item comme d'habitude :

StringWriter writer = new StringWriter();

try {
    mapper.writeValue(writer, myItem);
} catch (JsonGenerationException | JsonMappingException | IOException e) {
    e.printStackTrace();
}
Copier après la connexion

Exemple de sérialisation utilisateur

Pour sérialiser des objets utilisateur avec un stratégie de sérialisation personnalisée, créez un sérialiseur similaire et enregistrez-le auprès de Jackson.

N'oubliez pas que les sérialiseurs personnalisés offrent une flexibilité dans le contrôle de la représentation JSON de vos objets, répondant aux exigences spécifiques de sérialisation.

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