Jackson fournit un outil puissant pour sérialiser et désérialiser des objets Java en JSON et inversement. Parfois, vous pouvez rencontrer des scénarios dans lesquels la sérialisation par défaut ne répond pas à vos besoins spécifiques. Dans de tels cas, vous pouvez utiliser des sérialiseurs personnalisés pour personnaliser le processus de sérialisation.
Pour utiliser un sérialiseur personnalisé pour une classe particulière, vous devrez créer un classe qui étend JsonSerializer et remplace la méthode JsonSerializer#serialize. Dans cette méthode, vous pouvez spécifier la logique de sérialisation personnalisée pour la classe cible.
Par exemple, créons un sérialiseur personnalisé pour la classe Item :
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(); } }
Une fois que vous avez créé un sérialiseur personnalisé, vous devez l'enregistrer auprès de l'ObjectMapper de Jackson pour l'utiliser pendant la sérialisation. Vous pouvez le faire en créant un SimpleModule et en y ajoutant votre sérialiseur :
SimpleModule simpleModule = new SimpleModule("SimpleModule", new Version(1, 0, 0, null)); simpleModule.addSerializer(new ItemSerializer()); ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(simpleModule);
Dans certains scénarios, vous devrez peut-être uniquement personnaliser la sérialisation d'un champ spécifique au sein d’un objet. Pour y parvenir, vous pouvez utiliser l'annotation @JsonSerialize sur le champ souhaité et spécifier le sérialiseur personnalisé à utiliser :
public class User { ... @JsonSerialize(using = UserSerializer.class) private String name; ... }
Cela vous permet de contrôler la sérialisation de champs spécifiques individuellement, offrant une flexibilité dans la personnalisation du Sortie JSON.
La mise en œuvre de sérialiseurs personnalisés avec Jackson vous permet de modifier le comportement de sérialisation pour des classes spécifiques ou champs, vous donnant le contrôle sur la sortie JSON en fonction de vos besoins. Examinez attentivement les exigences en matière de champs et de classes pour déterminer où la sérialisation personnalisée peut améliorer la structure JSON résultante.
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!