Ignorer les propriétés manquantes lors de la désérialisation de jackson json dans java

Dans l’exemple

Class Person{ Ssortingng name; int age; } 

Si l’object json a une propriété ‘age’ manquante,

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

il lève une exception JsonMappingException disant qu’il ne peut pas se désérialiser. Existe-t-il une annotation pour ignorer les champs manquants lors de la désérialisation?

Merci

Je pense que ce que tu veux c’est

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

c’est la manière Jackson 1.x. Je pense qu’il y a une nouvelle manière dans 2.x. Quelque chose comme

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

Cela indiquera à Jackson de ne sérialiser que les valeurs non nulles et de ne pas se plaindre lors de la désérialisation d’une valeur manquante. Je pense que cela va simplement définir le paramètre par défaut de Java.

@JsonIgnoreProperties(ignoreUnknown = true) au niveau de la classe a fonctionné pour moi

L’approche basée sur les annotations est un meilleur moyen d’ignorer, mais si nécessaire. Le mode manuel de désérialisation:

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

Les versions modernes (2.9.6) des bibliothèques de Jackson ignoreront par défaut les propriétés de créateur manquantes. Toutefois, si la configuration ObjectMapper est définie sur:

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

Ensuite, vous obtenez une erreur de désérialisation si l’une des propriétés est manquante.