77 votes

Jackson : Que se passe-t-il si une propriété est manquante ?

Que se passe-t-il si j'annote un paramètre de constructeur à l'aide de @JsonProperty mais que le Json ne spécifie pas cette propriété. Quelle valeur obtient le constructeur ?

Comment faire la différence entre une propriété ayant une valeur nulle et une propriété qui n'est pas présente dans le JSON ?

17voto

StaxMan Points 34626

En plus du comportement du constructeur expliqué dans la réponse de @Programmer_Bruce, une façon de différencier une valeur nulle et une valeur manquante consiste à définir un setter : le setter n'est appelé qu'avec une valeur nulle explicite. Le setter personnalisé peut ensuite définir un indicateur booléen privé ("isValueSet" ou autre) si vous souhaitez garder une trace des valeurs définies.

Les setters ont la priorité sur les champs, dans le cas où le champ et le setter existent, vous pouvez donc également "outrepasser" le comportement de cette façon.

3voto

Roberto Points 373

Je pense utiliser quelque chose dans le style d'une classe Option, où un objet Nothing me dirait s'il existe ou non une telle valeur. Est-ce que quelqu'un a fait quelque chose comme ça avec Jackson (en Java, pas en Scala, et al) ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X