【问题标题】:RESTEasy + Jackson: how to exclude fields in the response?RESTEasy + Jackson:如何排除响应中的字段?
【发布时间】:2014-11-09 18:43:50
【问题描述】:

我正在将我的 Java Web 应用程序从基于 servlet 的迁移到 JAX-RS。由于我使用的是 Jboss,因此我还将使用(默认情况下)RESTEasy。

在我的 servlet 中,我使用 Jackson 来序列化/反序列化 JSON; Jackson 允许我以编程方式过滤字段的包含/排除,例如:

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 支持,但它似乎对开发人员透明地嵌入,因此我无法进入低级别以包含/排除字段。这可行吗?

【问题讨论】:

标签: jackson jax-rs resteasy


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 谢谢,指向“在 RestEasy 中访问 Jackson 对象映射器”的指针起到了作用
猜你喜欢
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
  • 2010-12-16
  • 1970-01-01
相关资源
最近更新 更多