首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Jersey中从1.9升级到Jackson 2.0不起作用

在Jersey中从1.9升级到Jackson 2.0不起作用
EN

Stack Overflow用户
提问于 2013-04-08 02:07:09
回答 4查看 6.5K关注 0票数 7

我正在使用Jackson (在泽西岛)来序列化实体,并且我正在从Jackson 1.9迁移到2.0。我关注了this guide,起初似乎一切都很容易解决。

但是仔细一看就会发现,Jackson 1.9仍然被用来序列化我的响应,因此忽略了我(迁移后的) Jackson 2.0注释。您可以在下面的代码片段中看到我使用了哪些注释:

代码语言:javascript
运行
复制
@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字段。

在debug中,我可以看到正在使用的ObjectMapper来自1.9。

我已经删除了Jackson 1.9的所有直接maven依赖项,并尝试在jersey-json中添加排除项,以防止它引入Jackson 1.9。但是我不能完全摆脱它(通过在我的依赖管理中排除所有codehaus.jackson的东西),因为我也在使用Spring AMQP,它需要Jackson 1.9。

关于如何管理这个问题有什么想法吗?有没有人遇到/解决过类似的问题?如何强制Jersey使用Jackson 2.0?

EN

Stack Overflow用户

回答已采纳

发布于 2013-04-11 20:15:43

基于StaxMan和pgelinas的(有用)答案,我回答了我自己的问题。

我必须做两件事才能让它工作。

第一件事是从我的web.xml中删除com.sun.jersey.api.json.POJOMappingFeature

第二个是将我的jackson-jaxrs-json-provider (实际上是我所有的杰克逊工件)更新到2.1

在2.1或2.0版本中,以及POJOMappingFeature,Jackson 1.9仍然用于序列化。

在删除了2.0和POJOMappingFeature之后,我得到了一个缺少消息体编写器的错误。

删除了2.1和POJOMappingFeature之后,一切都按预期进行了。

票数 8
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15865896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档