gpt4 book ai didi

maven - 在 Jersey 从 1.9 升级到 Jackson 2.0 不起作用

转载 作者:行者123 更新时间:2023-12-04 10:19:06 24 4
gpt4 key购买 nike

我正在使用 Jackson(在 Jersey )来序列化实体,并且我正在从 Jackson 1.9 迁移到 2.0。我关注了 this guide ,一开始似乎一切都很顺利。

但是仔细观察会发现 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?

最佳答案

我正在根据 StaxMan 和 pgelinas 的(有用的)答案回答我自己的问题。

我必须做两件事才能让它发挥作用。

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

第二个是更新我的 jackson-jaxrs-json-provider (实际上,我所有的 jackson 文物)到 2.1 .

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

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

删除 2.1 和 POJOMappingFeature 后,一切都按预期工作。

关于maven - 在 Jersey 从 1.9 升级到 Jackson 2.0 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com