146 votes

Comment désactiver fail_on_empty_beans dans Jackson ?

Si j'utilise jackson 2.1, comment puis-je désactiver l'option d'accès à l'Internet ? fail_on_empty beans que le message d'erreur semble vouloir que je désactive ?

Je suppose que c'est la chose la plus simple du monde, mais il est tard et je n'ai pas été en mesure de trouver un tutoriel simple ou quelque chose de particulièrement évident à partir de la page d'accueil du site. api . SerializationFactory ? Pourquoi le rendre si peu intuitif et faire en sorte que le message d'erreur semble si simple ?

Bien que je hacer comme le message d'erreur, je veux dire, c'est mieux qu'un NPE.

Je suppose qu'il y a un moyen de le faire en utilisant des annotations - mais je n'ai pas du tout envie de les utiliser pour le travail simpliste que je fais !

2voto

Reddeiah Pidugu Points 154

Si c'est une application Spring, il suffit de coller le code dans la classe de configuration.

        @Bean
        public ObjectMapper getJacksonObjectMapper() {
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.findAndRegisterModules();
            objectMapper.configure(
                    com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
            objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            return objectMapper;
        }

1voto

Kirk B. Points 346

J'ajoute ici une solution pour un problème différent, mais qui se manifeste par la même erreur... Prenez soin, lorsque vous construisez du json à la volée (en tant que réponses api ou autre), d'échapper aux guillemets doubles littéraux dans les membres de votre chaîne. Vous pourriez consommer votre propre json malformé.

1voto

ObjectMapper mapper = new ObjectMapper();

Salut,

Quand j'utilise mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)

Les valeurs de mon objet json sont vides dans la page angulaire et dans la réponse.

Résolu à l'aide des seuls paramètres ci-dessous

mapper.setVisibility(mapper.getSerializationConfig().getDefaultVisibilityChecker().
withFieldVisibility(JsonAutoDetect.Visibility.ANY).withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE));

-1voto

AppEmmanuel Points 136

Dans mon cas, je n'ai pas eu besoin de le désactiver, j'ai plutôt dû mettre ce code en haut de ma classe : (et cela a résolu mon problème).

    @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)//this is what was added
    @Value //this was there already
    @Builder//this was there already

public class NameOfClass {
     //some code in here.
}

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