RESTEasy + Jackson:如何排除响应中的字段?

ps0*_*604 7 jax-rs resteasy jackson

我正在将我的Java Web应用程序从基于servlet的Jrac-RS迁移到JAX-RS.因为我正在使用Jboss,所以我也会使用(默认情况下)RESTEasy.

在我的servlet中,我使用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);
Run Code Online (Sandbox Code Playgroud)

RESTEasy提供了Jackson的支持,但它似乎是透明地嵌入到开发人员中,因此我无法进入低级别来包含/排除字段.这可行吗?

Mat*_*all 10

您可以使用Jackson注释以声明方式配置几乎所有内容.在你的情况下,@JsonIgnore应该足够了.

如果您不想一直忽略这些字段,则可以使用JSON视图.

如果您无法修改相关课程的代码(例如,因为它位于第三方库中),您可以使用混音.

如果您仍然发现需要访问ObjectMapper:在RestEasy中访问Jackson Object Mapper.

另见:http://wiki.fasterxml.com/JacksonAnnotations