我正在使用 Jackson(在泽西岛)来序列化实体,并且我正在从 Jackson 1.9 迁移到 2.0。我按照本指南进行操作,起初似乎一切都很顺利。
但仔细观察会发现 Jackson 1.9 仍在用于序列化我的回复,因此忽略了我的(迁移的)Jackson 2.0 注释。您可以在以下代码片段中看到我使用了哪些注释:
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public abstract class IdEntity {
@Id
@JsonDeserialize(using = ObjectIdJsonDeserializer.class)
protected ObjectId id;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonSerialize(using = ObjectIdJsonSerializer.class)
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
@JsonIgnore
public String getIdAsString() {
return id == null ? "" : id.toString();
}
我的@JsonIgnore getter 正在序列化,而我的 ObjectIdJsonSerializer 没有用于 ObjectId 字段。
在调试中,我可以看到正在使用的 ObjectMapper 来自 1.9。
我已经删除了对 Jackson 1.9 的所有直接 maven 依赖项,并尝试向 jersey-json 添加排除项,以防止它引入 Jackson 1.9。但是我不能完全摆脱它(通过在我的依赖管理中排除所有 codehaus.jackson 的东西),因为我也在使用 Spring AMQP,它需要 Jackson 1.9。
关于如何管理这个的任何想法?有没有人遇到/解决过类似的问题?如何强制 Jersey 使用 Jackson 2.0?