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

时间:2014-11-09 18:43:51

标签: jackson jax-rs resteasy

我将Java Web应用程序从基于servlet的迁移到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);

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

1 个答案:

答案 0 :(得分:9)

您可以使用Jackson annotations以声明方式配置几乎所有内容。在您的情况下,@JsonIgnore就足够了。

如果您不想忽略这些字段,可以使用JSON views

如果您无法修改相关课程的代码(例如,因为它在第三方库中)mix-ins have you covered.

如果仍然发现您需要访问ObjectMapperAccessing Jackson Object Mapper in RestEasy

另请参阅:http://wiki.fasterxml.com/JacksonAnnotations