首页 > 解决方案 > 使用 JsonIgnoreProperties 特定属性反序列化属性只存在于 JSON

问题描述

我偶然发现了一些将JsonIgnoreProperties添加到类中不存在但存在于中的属性的代码JSON,例如:

@JsonIgnoreProperties({"ignoreprop"})
public class VO {
   public String prop;
}

JSON什么时候

{ "prop":"1", "ignoreprop":"9999"}

我想知道忽略属性是否在性能方面有任何优势,还是只是冗余代码?

可用于抑制属性序列化(序列化期间)或忽略 JSON 属性读取处理(反序列化期间)的注释。

编辑

忽略所有特定属性(使用 @JsonIgnoreProperties(ignoreUnknown=true))是否有优势?

标签: javajsonjson-deserialization

解决方案


我想知道忽略属性是否有任何优势

是的,它被大量用于服务中的前向兼容性。假设您有服务 A 和 B。目前 A 使用一些 JSON 对象向 B 发送请求。
现在您想在 JSON 中支持一个新属性。如果你有这个功能,你可以让 A 在 B 知道如何处理它之前开始发送新属性。解耦这两个服务的开发过程。

忽略所有的特定属性

这种情况确实有一些小的性能优势。首先,它不会尝试解析这个可以是简单字符串或复杂对象/数组的属性。其次,它可以帮助您避免处理异常。认为以下所有内容都可以是有效的调用,而您只关心prop

{ "prop":"1", "ignoreprop":"9999"}

{ "prop":"1", "ignoreprop":{ "a": { "key": "value", "foo": false }}}

{ "prop":"1", "ignoreprop":[1,2,3,4,5,6..... 1000000]}

推荐阅读