Я использую Jackson (в Джерси) для сериализации сущностей, и я перехожу от Jackson 1.9 до 2.0. Я последовал за this guide, и сначала казалось, что все получилось легко.Обновление до Jackson 2.0 от 1.9 на Джерси не работает
Но более пристальный взгляд показывает, что 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 добытчиками становятся сериализовать, и мой ObjectIdJsonSerializer не используется для ObjectId поля.
В отладке я вижу, что используемый ObjectMapper - 1,9.
Я удалил все прямые зависимости maven с Jackson 1.9 и попытался добавить исключения к jersey-json, чтобы предотвратить его вытаскивание в Jackson 1.9. Но я не могу полностью избавиться от него (добавив исключение ко всем файлам codehaus.jackson в моем управлении зависимостями), потому что я также использую Spring AMQP, которому нужен Jackson 1.9.
Любые идеи о том, как управлять этим? Кто-нибудь сталкивался/решал аналогичную проблему? Как заставить Джерси использовать Jackson 2.0?
Нет, я использую Maven, и я заменил все org.codehaus артефакты с их соответствующими версиями fasterxml. Я использовал [это руководство] (http://www.cowtowncoder.com/blog/archives/2012/04/entry_469.html), чтобы выполнить миграцию. – Eyal
Что я понял. Я хочу сказать, что, возможно, другой проект (Джерси?) Может включать Jackson 1.x в качестве транзитивной зависимости и добавить его в путь к классам, и, возможно, именно эта версия используется как поставщик JAX-RS. Если я правильно помню, можно проверить зависимости проекта с maven, вы должны это использовать. –
Джерси несет в себе старые зависимости Джексона, но они, похоже, время компиляции, поэтому я не уверен, что это проблема. Конечно, я обязательно это проверю :-) – Eyal