相关疑难解决方法(0)

反序列化时忽略属性

我有一个简单的接口,带有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适用于大多数情况.

java json jackson

29
推荐指数
5
解决办法
4万
查看次数

标签 统计

jackson ×1

java ×1

json ×1