2014-11-09 2 views
6

Я переношу свое веб-приложение Java с сервлета на JAX-RS. Поскольку я использую Jboss, я также буду использовать (по умолчанию) RESTEasy.RESTEasy + Jackson: как исключить поля в ответе?

В моих сервлетах я использую Jackson для сериализации/десериализации JSON; Джексон позволяет мне отфильтровать программно включение/исключение полей, например:

ObjectMapper mapper = new ObjectMapper().setVisibility(JsonMethod.FIELD, 
Visibility.ANY); 

String[] ignorableFieldNames = { "id", "name" }; 

FilterProvider filters = new SimpleFilterProvider(). 
addFilter("f123",SimpleBeanPropertyFilter.serializeAllExcept(ignorableFieldNames)); 

mapper.filteredWriter(filters).writeValueAsString(object); 

Resteasy обеспечивает поддержку Джексона, но мне кажется, что он встроен прозрачно для разработчика, так что я не в состоянии добраться до низкой -level для включения/исключения полей. Это возможно?

+1

возможно дубликат [Как добавить и игнорировать поле для ответа JSon] (http://stackoverflow.com/questions/8892937/how-to-add-and-ignore-a -field-for-json-response) –

+0

@ruffp похоже, но не совсем. –

ответ

8

Вы можете использовать Jackson annotations, чтобы декларативно настроить практически все. В вашем случае должно быть достаточно @JsonIgnore.

Вы можете использовать JSON views, если вы не хотите игнорировать эти поля все время.

Если вы не можете изменить код данного класса (скажем, потому что в библиотеке третьей стороны) mix-ins have you covered.

И если вы еще обнаружить, что вам нужно получить доступ к ObjectMapper: Accessing Jackson Object Mapper in RestEasy ,

Смотрите также: http://wiki.fasterxml.com/JacksonAnnotations

+0

спасибо, указатель на «Доступ к Jackson Object Mapper в RestEasy» сделал трюк – ps0604

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