我有一个简单的接口,它具有用于获取和设置属性的方法。
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
}
我的问题是,我想序列化资金属性,但在反序列化它时忽略它,即不接受用户为此属性提供的任何值。我尝试了在setter上使用@JsonIgnore和在getter上使用@JsonIgnore(false),它确实会忽略该属性,但在序列化时也会这样做。我尝试在setter上使用@JsonIgnore和在getter上使用@JsonProperty,只是明确告诉Jackson我们打算跟踪此属性,但是当将money属性发送到服务器并且Jackson尝试反序列化时,应用程序似乎会崩溃,抛出MalformedJsonException: 无法构造Money类型的对象。
最奇怪的是,在大多数情况下将@JsonIgnore放在setter上并在getter上放置@JsonProperty可以正常工作,当属性是原始类型时更是如此。