2013-12-20 2 views
3

меня POJO как эти:JacksonFeature брейки JsonIgnoreProperties

@JsonIgnoreProperties(ignoreUnknown = true) 
public class SNAPIResponse { 

    public String status; 
    public String message; 
    public int errorCode; 

    public ConsumerProfile consumerProfile; 

    @JsonIgnoreProperties(ignoreUnknown = true) 
    public static class ConsumerProfile { 
     public String accountId; 
    } 
} 

и мой клиент Джерси работает просто отлично, даже несмотря на то, ConsumerProfile ответов содержат много дополнительных полей.

Затем добавить строку:

client.register(JacksonFeature.class); 

моей установки клиента Джерси. И после этого игнорирование больше не работает:

Unrecognized field "authService" (Class com.xyz..SNAPIResponse$ConsumerProfile), not marked as ignorable 

Почему?

+0

Какую версию Джерси вы используете? И какая версия Джексона? – Alden

ответ

1

я наткнулся на этот пост, который помог мне получить JsonIgnoreProperties снова работает: http://jersey.576304.n2.nabble.com/Beware-of-JacksonFeature-in-Jersey-td7581633.html

Я не исследовал достаточно, чтобы быть 100% уверены, что на основную причину этой проблемы, но это, кажется, регистрации JacksonFeature.class тянет для этого нужна устаревшая версия библиотеки.

Выполнение, как предлагалось в этой связи, сработало для меня.

+0

Я забыл об этом. Но да, проблема заключалась в том, что Swagger потянул в древнюю версию Джерси или ее части, что вызывает действительно случайное поведение. Я соглашусь с ответом, потому что это правда: будьте осторожны, чтобы не использовать несколько версий Джерси в вашем проекте. – vertti

Смежные вопросы