Tôi có một giao diện đơn giản với getter và setter cho một thuộc tính.Bỏ qua thuộc tính khi deserializing
public interface HasMoney {
Money getMoney();
void setMoney(Money money);
}
Tôi có một lớp UserAccount khác thực hiện giao diện này.
public class UserAccount implements HasMoney {
private Money money;
@Override
Money getMoney() // fill in the blanks
@Override
void setMoney(Money money) // fill in the blanks
}
Vấn đề của tôi là tôi muốn tuần tự hóa thuộc tính tiền nhưng bỏ qua trong khi deserializing nó, không chấp nhận bất kỳ giá trị nào từ người dùng cho thuộc tính này. Tôi đã thử @JsonIgnore trên setter và @JsonIgnore (false) trên getter, nó bỏ qua nó nhưng nó làm như vậy trong khi serializing nó cũng có.
Tôi đã thử @JsonIgnore trên setter và @JsonProperty trên getter chỉ để nói rõ Jackson rằng chúng tôi dự định theo dõi tài sản này, dường như làm hỏng ứng dụng khi tài sản tiền được gửi tới máy chủ và Jackson cố gắng deserialize nó ném lên MalformedJsonException: không thể xây dựng đối tượng kiểu Money.
Điều đáng sợ nhất là đặt @JsonIgnore trên trình thiết lập và @JsonProperty trên trình thiết lập hoạt động cho hầu hết các trường hợp khi thuộc tính là nguyên thủy.
Điều này thực sự là một phần của giải pháp. Tôi cũng đã phải thêm objectMapper.disable (MapperFeature.USE_GETTERS_AS_SETTERS) và nó đã làm việc sau đó. Vui lòng chỉnh sửa câu trả lời của bạn và tôi sẽ chấp nhận nó. Buồn của nó là không có cách nào sạch hơn cho điều này (Atleast tôi đã không thể tìm thấy nó). –
@NishantNagwani - odd, hoạt động cho tôi mà không bật tính năng đó. Tôi đang thêm một lưu ý tùy chọn vào câu trả lời của mình nhưng tôi tò mò nếu có điều gì đó khác biệt về thiết lập của bạn sẽ đòi hỏi 'USE_GETTERS_AS_SETTERS'. – Perception
Tôi đã thử lại lần nữa. Không làm việc với môi trường của tôi. Tôi đang sử dụng jackson 2.1.1. Đây là lỗi tôi nhận được { "message": "json không đúng định dạng được chuyển đến máy chủ, loại dữ liệu không đúng được sử dụng: \ nHãy giải quyết deserializing 'setterless' property 'money': get phương thức trả về null (thông qua chuỗi tham chiếu: com.abc. def.Money]) " } –