Maison >Java >javaDidacticiel >Comment configurer ObjectMapper au printemps pour la sérialisation et la désérialisation JSON personnalisées ?
Au Spring, l'ObjectMapper peut être configuré pour répondre à des exigences spécifiques. Ceci est particulièrement utile lorsque vous souhaitez contrôler le comportement de sérialisation et de désérialisation de vos données JSON.
Un scénario courant consiste à exclure certaines propriétés de la sérialisation à moins qu'elles ne soient explicitement annotées. Pour y parvenir, nous suivons ces étapes :
Créer un ObjectMapper personnalisé :
public class CompanyObjectMapper extends ObjectMapper { public CompanyObjectMapper() { super(); setVisibilityChecker(getSerializationConfig() .getDefaultVisibilityChecker() .withCreatorVisibility(JsonAutoDetect.Visibility.NONE) .withFieldVisibility(JsonAutoDetect.Visibility.NONE) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE) .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT)); } }
Inclure l'ObjectMapper personnalisé dans Spring configuration :
<bean>
Configurer Spring MVC 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="jacksonObjectMapper" /> </bean> </list> </property> </bean>
Cependant, cette approche peut ne pas fonctionner comme prévu si vous utilisez les versions Spring 3.0.5 et Jackson 1.8.0. Pour résoudre ce problème, il est recommandé d'utiliser la configuration basée sur les annotations suivante avec Spring Boot et Jackson 2.4.6 ou version ultérieure :
@Configuration public class JacksonConfiguration { @Bean public ObjectMapper objectMapper() { ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true); return mapper; } }
Cette configuration permettra à l'ObjectMapper de sérialiser uniquement les propriétés qui ont le @ Annotation JsonProperty, satisfaisant l'exigence souhaitée.
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!