在java中使用jackson json反序列化时忽略缺少的属性

在这个例子中

Class Person{ String name; int age; } 

如果json对象缺少属性’age’,

 { name : John } Person person = objectMapper.readValue(jsonFileReader, Person.class); 

它抛出一个JsonMappingException,说它不能反序列化。 是否有注释在反序列化期间忽略缺少的字段?

谢谢

我想你想要的是什么

 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) public class Person { ... } 

那是Jackson 1.x的方式。 我认为在2.x中有一种新的方式。 就像是

 @JsonInclude(Include.NON_NULL) public class Person { ... } 

这些将告诉Jackson只序列化非空值,并且在反序列化缺失值时不要抱怨。 我认为它只会将其设置为Java默认值。

类级别的@JsonIgnoreProperties(ignoreUnknown = true)对我@JsonIgnoreProperties(ignoreUnknown = true)

基于注释的方法是忽略但是如果需要的更好方法。 手动反序列化方式:

 ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); Person person = mapper.readValue(jsonFileReader, Person.class); 

我想你会想要使用@JsonIgnore注释: https ://fasterxml.github.io/jackson-annotations/javadoc/2.2.0/com/fasterxml/jackson/annotation/JsonIgnore.html

jackson库的现代版本(2.9.6)将默认忽略缺少的创建者属性。 但是,如果ObjectMapper配置设置为:

 ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_MISSING_CREATOR_PROPERTIES, true); 

然后,如果缺少其中一个属性,您将收到反序列化错误。