【发布时间】:2015-01-15 07:52:08
【问题描述】:
我在我的项目中使用声明式链接。我的杰克逊映射器配置是
final ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
mapper.configure(MapperFeature.AUTO_DETECT_FIELDS, false);
mapper.configure(MapperFeature.AUTO_DETECT_IS_GETTERS, false);
mapper.configure(MapperFeature.AUTO_DETECT_GETTERS, false);
mapper.configure(MapperFeature.AUTO_DETECT_SETTERS, false);
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
由于我禁用了任何类型的自动检测,注入的链接如
@InjectLinks({
@InjectLink(rel = "bookmark", resource = ConnectionsResource.class, style = Style.ABSOLUTE_PATH) })
@JsonProperty("links")
Link[] links;
被序列化为一个空的 JSON 对象(因为“链接”中的所有字段都没有用 @JsonProperty 注释)。
如何在不更改我的全局映射器配置的情况下仅为字段 rel 和 href 启用链接序列化?
【问题讨论】:
-
这是 Jersey 2.x 还是
Link类型javax.ws.rs.core.Link? -
您使用的是哪个 JSON 提供程序?我想测试一下
-
<groupId>com.fasterxml.jackson.jaxrs</groupId><artifactId>jackson-jaxrs-json-provider</artifactId> -
所有值都是空的问题,或者是太多不必要的字段的问题。因为我无法重现前者。我可以重现后者,并有一个解决方案
-
问题是映射器被配置为排除除标记字段之外的所有字段 (
@JsonProperty)。此设置无法更改。Link类公开的字段未标记,因此未序列化为 json。生成的 JSON 仅包含"links":[{},{},...]
标签: java json serialization jersey jackson