Konfigurieren Jackson eine exception werfen, wenn ein Feld fehlt
Habe ich eine Klasse wie folgt aus:
public class Person {
private String name;
public String getName(){
return name;
}
}
Bin ich mit einer ObjectMapper so konfiguriert:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Ich habe einen String str
enthält, die diese { "address" : "something" }
. Beachten Sie, dass es keine "name" - Feld im json-Format. Wenn ich etwas wie das hier tun:
mapper.readValue(str, Person.class);
dann habe ich tatsächlich wieder ein Person-Objekt mit dem Namen set zu null. Gibt es eine Möglichkeit zum konfigurieren der mapper eine exception werfen, statt, oder null-Verweis anstatt eine Person? Ich will Jackson zu prüfen, fehlende Felder ein Versager und will nicht zu tun, explizite null-Prüfungen auf dem resultierenden Objekt-Felder.
- Hinzufügen von lombok.Nicht-null-annotation auf dem Feld arbeitet für mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider wird dies nicht unterstützt von Jackson in diesem moment.
Lösung könnte sein, fügen Sie die Validierung im Konstruktor. Als ideal, wenn Sie nicht wollen, haben diese Werte serialisiert als null ist , es bedeutet, dass Sie sollten nicht diese als null ist überhaupt gebaut wurde, in anderer Weise). Zum Beispiel,
jedoch könnte dies nicht fittable in allen Situationen, speziell wenn Sie Ihr Objekt anderen als durch serialisieren/Deserialisieren.
Obwohl Sie
required
Attribut in@JsonProperty
Anmerkung, es wird nicht unterstützt, während der Deserialisierung überhaupt, und wurde nur eingeführt werden, für die Dekoration JSON-schemas. Sehen Sie diese ThemaAls Jackson 2.6, es ist ein Weg, aber es funktioniert nicht auf class-Attribut Anmerkungen, nur Konstruktor Anmerkungen:
@JsonCreator
ist nicht erforderlich, um Sie vor dem Konstruktor. (?)