Tôi đang sử dụng Jackson (ở Jersey) để sắp xếp các thực thể và tôi đang di chuyển từ Jackson 1.9 đến 2.0. Tôi đã theo dõi this guide và lúc đầu, dường như mọi thứ đã diễn ra dễ dàng.Nâng cấp lên Jackson 2.0 từ 1,9 ở Jersey không hoạt động
Nhưng một cái nhìn gần hơn cho thấy rằng Jackson 1.9 vẫn đang được sử dụng để sắp xếp các câu trả lời của tôi, và do đó bỏ qua chú thích Jackson 2.0 (di chuyển) của tôi. Bạn có thể xem chú thích Tôi đang sử dụng trong các đoạn mã sau:
@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();
}
getters @JsonIgnore tôi đang nhận được đăng, và ObjectIdJsonSerializer của tôi không được sử dụng cho các lĩnh vực ObjectId.
Trong gỡ lỗi, tôi có thể thấy rằng ObjectMapper đang được sử dụng là từ 1.9.
Tôi đã xóa tất cả phụ thuộc maven trực tiếp đối với Jackson 1.9 và đã thử thêm loại trừ vào jersey-json, để ngăn không cho nó kéo vào Jackson 1.9. Nhưng tôi không thể loại bỏ nó hoàn toàn (bằng cách đặt một loại trừ cho tất cả các công cụ codehaus.jackson trong quản lý phụ thuộc của tôi) bởi vì tôi cũng đang sử dụng Spring AMQP, cần Jackson 1.9.
Bất kỳ ý tưởng nào về cách quản lý điều này? Có ai gặp phải/giải quyết một vấn đề tương tự? Tôi buộc Jersey sử dụng Jackson 2.0 như thế nào?
Không, tôi đang sử dụng Maven và tôi đã thay thế tất cả các đồ tạo tác org.codehaus với các phiên bản fasterxml tương ứng của họ. Tôi đã sử dụng [hướng dẫn này] (http://www.cowtowncoder.com/blog/archives/2012/04/entry_469.html) để thực hiện việc di chuyển. – Eyal
Điều đó tôi hiểu. Những gì tôi đang nói là có lẽ một dự án khác (Jersey?) Có thể bao gồm Jackson 1.x như một phụ thuộc quá độ và thêm nó vào classpath, và có lẽ đó là phiên bản này được sử dụng như là nhà cung cấp JAX-RS. Nếu tôi nhớ lại chính xác, có thể kiểm tra các phụ thuộc của một dự án với maven, bạn nên sử dụng nó. –
Jersey mang đến các phụ thuộc cũ của Jackson, nhưng chúng dường như là thời gian biên dịch, vì vậy tôi không chắc đó là vấn đề. Tôi chắc chắn sẽ kiểm tra này ra, tất nhiên :-) – Eyal