web-dev-qa-db-fra.com

Comment configurer Jackson dans une application de démarrage de printemps sans remplacer le réglage par défaut des ressorts en java pur

Dans mon application de démarrage de printemps, j'utilise Jackson pour sérialiser des objets en injectant la variable ObjectMapper si nécessaire .. J'ai trouvé cette réponse: https://stackoverflow.com/a/32842962/447426 Mais celle-ci crée un nouveau mappeur - avec les paramètres par défaut des jacksons.

Par contre, j'ai trouvé this dans le document officiel. Je n'ai pas vraiment compris. Il n'y a pas d'exemple de code.

Alors, comment configurer les ressorts ObjectMapper sur la base du mappeur d’objets par défaut de Springs?

Cette configuration doit être active sur "ObjectMapper" où qu'elle soit injectée.

7
dermoritz

Vous devriez utiliser Jackson2ObjectMapperBuilderCustomizer pour cela

@Configuration
public class JacksonConfiguration {

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer addCustomBigDecimalDeserialization() {
        return new Jackson2ObjectMapperBuilderCustomizer() {

            @Override
            public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
               jacksonObjectMapperBuilder.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
               // Add your customization
               // jacksonObjectMapperBuilder.featuresToEnable(...)      
            }
        };
    }
}
8
pvpkiran

D'autre part, j'ai trouvé cela dans le document officiel. Je n'ai pas vraiment compris. Il n'y a pas d'exemple de code.

Cela signifie simplement que vous devez uniquement définir les propriétés correctes dans le fichier application.properties pour activer ou désactiver les différentes fonctionnalités de Jackson. 

spring.jackson.mapper.default-view-inclusion=false
spring.jackson.deserialization.fail-on-unknown-properties=false

P.S. J'aurais préféré ajouter ceci comme commentaire

1
KevinC