Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JsonIgnoreProperties特定属性反序列化属性的使用仅在JSON中存在_Java_Json_Json Deserialization - Fatal编程技术网

Java JsonIgnoreProperties特定属性反序列化属性的使用仅在JSON中存在

Java JsonIgnoreProperties特定属性反序列化属性的使用仅在JSON中存在,java,json,json-deserialization,Java,Json,Json Deserialization,我偶然发现了一些添加到属性的代码,该属性在类中不存在,但在JSON中存在,例如: @JsonIgnoreProperties({"ignoreprop"}) public class VO { public String prop; } 当JSON为 { "prop":"1", "ignoreprop":"9999"} 我想知道忽略属性是否在性能方面有任何优势,还是只是冗余代码 可用于抑

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

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

{ "prop":"1", "ignoreprop":"9999"}
我想知道忽略属性是否在性能方面有任何优势,还是只是冗余代码

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

编辑

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

从文档中可以看出,使用它的主要目的是毫无例外地忽略JSON输入中的任何未知属性:当在类或JSON中都找不到属性时,最好不要弹出异常,这可能有助于更快地序列化

例如:

//防止对指定字段进行序列化或反序列化

//(即不包含在JSON输出中;或即使包含也被设置) @JsonIgnoreProperties({“internalId”,“secretKey”})

//要毫无例外地忽略JSON输入中的任何未知属性,请执行以下操作: @JsonIgnoreProperties(ignoreUnknown=true)

从2.0开始,此注释可以应用于类和属性。若两者都使用,则实际集合将是所有ignoral的并集:也就是说,您只能添加要忽略的属性,而不能删除或重写。因此,不能使用每个属性注释删除要忽略的属性

我不知道忽略属性是否有任何好处

是的,它经常用于服务的前向兼容性。假设您有服务A和B。当前A向B发送带有一些JSON对象的请求。
现在您希望在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]}

你能给文档添加链接吗?如果我想忽略十几个属性,这更好吗?是的,您可以在注释中添加所有属性,或者只需添加此
@JsonIgnoreProperties(ignoreUnknown=true)
我建议在多个属性的情况下,忽略所有属性(使用
@JsonIgnoreProperties)有一个优势(ignoreUnknown=true)
)?让我们直截了当地说吧,您得到的JSON包含100个字段,您只需要5个字段,那么建议设置
ignoreUnknown=true)
或指定每个字段,这取决于需求,这个注释完全避免了未知字段的异常,这是@user7294900I的主要目的。我只想知道当
ignoreUnknown=true
应该涵盖它时,忽略特定属性是否有真正的原因/优势(并且会很灵活)忽略特定属性是否有优势(使用
@JsonIgnoreProperties(ignoreUnknown=true)
)?@user7294900-编辑以回答您的特定问题,因此
ignoreUnknown
将尝试在
ignoreprop
内部进行解析,尽管它不是类中的属性?