我有一个简单的接口,带有getter和setter属性.
public interface HasMoney {
Money getMoney();
void setMoney(Money money);
}
Run Code Online (Sandbox Code Playgroud)
我有另一个类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
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我想序列化money属性但在反序列化时忽略它,即不接受用户对此属性的任何值.我在setter上尝试了@JsonIgnore,在getter上尝试了@JsonIgnore(false),它确实忽略了它,但它也是在序列化时也是如此.
我在setter上尝试了@JsonIgnore,在getter上尝试了@JsonProperty,只是为了明确告诉Jackson我们打算跟踪这个属性,当money属性被发送到服务器并且Jackson试图反序化它抛出MalformedJsonException时,这似乎会崩溃应用程序:不能构造Money类型的对象.
最奇怪的是,当属性是原始的时,将@JsonIgnore放在setter上并且setter上的@JsonProperty适用于大多数情况.