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
内部进行解析,尽管它不是类中的属性?