java - 反序列化时忽略属性

我有一个简单的接口(interface),其中包含属性的 getter 和 setter。

public interface HasMoney { 

      Money getMoney();

      void setMoney(Money money);

 }

我有另一个类 UserAccount 实现了这个接口(interface)。

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 我们打算跟踪这个属性,当金钱属性发送到服务器并且 Jackson 试图反序列化它抛出时,这似乎会使应用程序崩溃up MalformedJsonException : 无法构造 Money 类型的对象。

最奇怪的是,将@JsonIgnore 放在setter 上,将@JsonProperty 放在setter 上适用于大多数情况下的原始属性。

最佳答案

版本 2.6.0+ 允许在类级别使用 @JsonIgnoreProperties 完成此操作。

@JsonIgnoreProperties(value={ "money" }, allowGetters=true)

看看这个已关闭的问题: https://github.com/FasterXML/jackson-databind/issues/95

https://stackoverflow.com/questions/16019834/

相关文章:

python - Pandas 数据框到没有索引的json

.net - JSON.NET JsonConvert 与 .NET JavaScriptSeria

javascript - Rails 中奇怪的 JSON Javascript 问题

json - 在 JSON 中序列化 base64 编码的数据

javascript - 属性名称的 JSON 语法

java - JSON 对象中值的顺序是否重要?

json - 如何在 jq 中将 JSON 对象转换为 key=value 格式?

java - 使用 jackson JsonNodeFactory 的最佳方式

python - 将 Json 嵌套到具有特定格式的 pandas DataFrame

javascript - 列表/数组是有效的 JSON 吗?