我有一个简单的接口,带有属性的 getter 和 setter。
public interface HasMoney {
Money getMoney();
void setMoney(Money money);
}
我有另一个类 UserAccount 实现了这个接口。
public class UserAccount implements HasMoney {
private Money money;
@Override
Money getMoney() // fill in the blanks
@Override
void setMoney(Money money) // fill in the blanks
}
我的问题是我想序列化money 属性,但在反序列化时忽略它,即不接受来自用户的该属性的任何值。我已经在 setter 上尝试了 @JsonIgnore ,在 getter 上尝试了 @JsonIgnore(false) ,它确实忽略了它,但它在序列化它的同时也这样做了。
我在 setter 上尝试了@JsonIgnore,在 getter 上尝试了@JsonProperty,只是为了明确告诉 Jackson 我们打算跟踪这个属性,当金钱属性发送到服务器并且 Jackson 试图反序列化它并抛出 MalformedJsonException 时,这似乎会使应用程序崩溃:无法构造 Money 类型的对象。
最奇怪的是,将@JsonIgnore 放在setter 上,将@JsonProperty 放在setter 上适用于大多数情况下属性是原始的情况。