Configurer Jackson pour lancer une exception lorsqu'un champ est manquant
J'ai une classe comme ceci:
public class Person {
private String name;
public String getName(){
return name;
}
}
Je suis en utilisant un ObjectMapper configuré comme ceci:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
J'ai une Chaîne str
que contient cette { "address" : "something" }
. Notez qu'il n'y a pas de champ "nom" dans le json. Si je fais quelque chose comme ceci:
mapper.readValue(str, Person.class);
puis j'ai fait revenir une Personne de l'objet avec le nom de la valeur null. Est-il un moyen de configurer le mappeur de lancer une exception au lieu, ou le retour d'une référence null à la place d'une Personne? Je veux Jackson à considérer champs manquants un échec et ne veulent pas le faire explicite null contrôles sur l'objet résultant de champs.
L'ajout de lombok.Non annotation sur le champ fonctionne pour moi.
OriginalL'auteur mushroom | 2015-02-05
Vous devez vous connecter pour publier un commentaire.
Malheureusement, ce n'est pas pris en charge par Jackson en ce moment.
Solution pourrait être d'ajouter la validation de votre constructeur. Aussi idéalement si vous ne voulez pas avoir ces valeurs sérialisées nulle , cela signifie que vous ne devriez pas avoir comme nuls à tous (construit dans l'autre sens). Par exemple,
mais cela pourrait ne pas fittable dans toutes les situations, surtout si vous êtes en utilisant des objets, des autres que par le biais de la sérialisation/désérialisation.
S'ils ont
required
attribut dans@JsonProperty
annotation, il n'est pas pris en charge lors de la désérialisation, et a été introduite que pour la décoration de schémas JSON. Voir ce sujetDésolé, il n'était pas clair. J'ai édité la réponse.
OriginalL'auteur vtor
De Jackson 2.6, il n'y est un moyen, mais il ne fonctionne pas sur un attribut de classe d'annotations, seulement constructeur annotations:
Il semble que
@JsonCreator
n'est pas nécessaire de faire précéder le constructeur. (?)OriginalL'auteur zopieux