Maison >Java >javaDidacticiel >Comment personnaliser l'ObjectMapper de Spring pour sérialiser uniquement les propriétés annotées @JsonProperty ?
Configuration d'ObjectMapper dans Spring
Dans les applications Spring, l'ObjectMapper est un composant crucial pour sérialiser et désérialiser les données JSON. Vous pouvez personnaliser l'ObjectMapper pour répondre à des exigences spécifiques, telles que la sérialisation uniquement des propriétés annotées avec @JsonProperty.
Pour y parvenir, la première étape consiste à créer une classe ObjectMapper personnalisée qui étend la classe de base ObjectMapper fournie par Jackson. Remplacez le vérificateur de visibilité par défaut pour exclure les propriétés non annotées :
public class MyCustomObjectMapper extends ObjectMapper { public MyCustomObjectMapper() { super(); setVisibilityChecker(getSerializationConfig() .getDefaultVisibilityChecker() .withCreatorVisibility(JsonAutoDetect.Visibility.NONE) .withFieldVisibility(JsonAutoDetect.Visibility.NONE) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE) .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT)); } }
Ensuite, enregistrez le bean ObjectMapper personnalisé dans le fichier de configuration Spring (servlet.xml) :
<bean>
Enfin, configurez le framework MVC basé sur les annotations pour utiliser l'ObjectMapper personnalisé :
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="objectMapper" ref="customObjectMapper" /> </bean> </list> </property> </bean>
Dans l'exemple de code fourni, le La classe NumbersOfNewEvents contient deux attributs publics :
public class NumbersOfNewEvents implements StatusAttribute { public Integer newAccepts; public Integer openRequests; // ... }
Cependant, seul l'attribut newAccepts est annoté avec @JsonProperty :
@JsonProperty public Integer newAccepts;
En configurant l'ObjectMapper comme décrit ci-dessus, seul l'attribut newAccepts doit être sérialisé lorsque l'objet NumbersOfNewEvents est converti en JSON. En effet, l'ObjectMapper personnalisé exclura les propriétés non annotées lors de la 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!