【发布时间】:2013-04-07 20:12:41
【问题描述】:
我有一个简单的接口,其中包含属性的 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
}
我的问题是我想序列化货币属性,但在反序列化时忽略它,即不接受用户为这个属性提供的任何值。我已经在 setter 上尝试了 @JsonIgnore ,在 getter 上尝试了 @JsonIgnore(false) ,它确实忽略了它,但它在序列化它的同时也这样做了。
我在 setter 上尝试了@JsonIgnore,在 getter 上尝试了@JsonProperty,只是为了明确告诉 Jackson 我们打算跟踪这个属性,当金钱属性被发送到服务器并且 Jackson 试图反序列化它抛出时,这似乎会使应用程序崩溃up MalformedJsonException : 无法构造 Money 类型的对象。
最奇怪的是,将@JsonIgnore 放在setter 上,将@JsonProperty 放在setter 上适用于大多数情况下的原始属性。
【问题讨论】: