反序列化时忽略属性
我有一个简单的接口,带有属性的 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 我们打算跟踪此属性,当 money 属性发送到服务器时,这似乎会使应用程序崩溃,而 Jackson 试图反序列化它,抛出 MalformedJsonException:无法构造 Money 类型的对象。
最奇怪的是,将@JsonIgnore放在 setter 上,@JsonProperty放在 setter 上,当属性是基元时,在大多数情况下都是有效的。