Dans l'exemple
class Person {
String name;
int age;
}
Si l'objet JSON a une propriété manquante 'age',
{
name : John
}
Person person = objectMapper.readValue(jsonFileReader, Person.class);
il jette un JsonMappingException
disant qu'il ne peut pas se désérialiser. Existe-t-il un 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 le mettre sur Java par défaut.
@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);
Vous obtiendrez alors une erreur de désérialisation si l'une des propriétés est manquante.
Je pense que vous voudriez utiliser l'annotation @JsonIgnore: https://fasterxml.github.io/jackson-annotations/javadoc/2.2.0/com/fasterxml/jackson/annotation/JsonIgnore.html