我将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支持,但它似乎是透明地嵌入到开发人员中,因此我无法进入低级别来包含/排除字段。这可行吗?
答案 0 :(得分:9)
您可以使用Jackson annotations以声明方式配置几乎所有内容。在您的情况下,@JsonIgnore
就足够了。
如果您不想忽略这些字段,可以使用JSON views。
如果您无法修改相关课程的代码(例如,因为它在第三方库中)mix-ins have you covered.
如果仍然发现您需要访问ObjectMapper
:Accessing Jackson Object Mapper in RestEasy。