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

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

DDD
DDDoriginal
2024-11-26 01:11:10960parcourir

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

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

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

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

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!

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