2012-02-15 40 views
8

Chúng tôi vừa nâng cấp một số phụ thuộc maven, đã kích hoạt cập nhật của Jackson từ 1.7.x lên 1.9.xJackson @JsonIgnore đã thay đổi ngữ nghĩa?

Chúng tôi sử dụng chú thích @JsonIgnore trên phương thức setter, về phương pháp không được thiết lập từ phía máy khách. ví dụ: chủ sở hữu của một đối tượng (phải được đặt từ hiệu trưởng xác thực), v.v.

Có vẻ như các semanthincs của chú thích này đã thay đổi, có khả thi không? bây giờ lĩnh vực này được jsonignored trong mọi trường hợp, và không chỉ khi được thiết lập.

là trường hợp đó phải không? là có một cách khác trong 1.9 để thực hiện bỏ qua SET chỉ?

cảm ơn! r.

+0

Bạn có thêm chú thích @JsonProperty vào trường hoặc trình khởi động không? –

+0

Tôi đang thêm nó vào Setter. Mà ngăn chặn nó được thiết lập trong quá trình de-serialization trong 1.7.x – Rafael

Trả lời

8

Ok, tôi nghĩ rằng tôi đã tìm thấy và đề cập rõ ràng đến vấn đề này trong javadoc. (tài liệu jackson không dễ dàng đi qua).

Ngoài ra, bắt đầu với Jackson 1.9, nếu đây là chú thích duy nhất được liên kết với thuộc tính, nó cũng sẽ khiến cho toàn bộ thuộc tính bị bỏ qua: nghĩa là nếu setter có chú thích và getter này không có chú thích , getter cũng bị bỏ qua một cách hiệu quả. Nó vẫn có thể cho những người truy cập khác nhau sử dụng các chú thích khác nhau; vì vậy nếu chỉ "getter" được bỏ qua, accessors khác (setter hoặc field) sẽ cần chú thích rõ ràng để ngăn chặn ignoral (thường là JsonProperty).

+4

đúng. Đây là sự thay đổi lớn trong 1.9 (mà trong tầm nhìn có lẽ nên đợi đến khi 2.0). Để đạt được những gì bạn muốn ("split accessors"), bạn cần thêm '@ JsonProperty' vào getter - mặc định là giả định rằng nếu chỉ tìm thấy một chú thích thích hợp, nó sẽ áp dụng cho tất cả các phần của thuộc tính" full " . – StaxMan

Các vấn đề liên quan