2 votes

Plusieurs sérialiseurs personnalisés pour la même entité dans Spring Boot

Je travaille sur une application Spring Boot. J'ai créé un sérialiseur personnalisé pour une entité A et je l'ai enregistré en utilisant l'annotation @JsonSerialize(using = CustomSerializer.class). Chaque fois que j'envoie A dans ResponseEntity<>, le sérialiseur personnalisé est appelé et tout fonctionne bien jusqu'à présent.

Il existe maintenant une autre API dans laquelle je dois envoyer une collection de A en réponse. Mais je ne peux pas utiliser le même serializer pour construire la liste des A car les paramètres de réponse sont totalement différents. J'ai besoin d'écrire un autre serializer pour la même entité.

Comment puis-je configurer 2 sérialiseurs pour la même entité ? Ils doivent être appelés en fonction du type d'objet envoyé en réponse, c'est-à-dire que lorsque j'envoie A, le serializer1 doit être appelé et lorsque j'envoie Collection, le serializer2 doit être appelé. Veuillez m'aider !

0voto

Manos Nikolaidis Points 7375

Une solution de contournement simple consisterait à annoter la collection pour qu'elle utilise un sérialiseur spécifique pour le contenu. Par exemple

@JsonSerialize(using = CustomSerializer.class)
class A {
}

class AList {
    @JsonSerialize(contentUsing = AnotherCustomSerializer.class)
    private final List<A> list;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X