Konfigurieren Sie Jackson, um eine Ausnahme auszulösen, wenn ein Feld fehlt

8

Ich habe eine Klasse wie folgt:

%Vor%

Ich verwende einen ObjectMapper, der wie folgt konfiguriert ist:

%Vor%

Ich habe eine Zeichenfolge str , die diese { "address" : "something" } enthält. Beachten Sie, dass es kein "Name" -Feld im JSON gibt. Wenn ich so etwas mache:

%Vor%

Dann bekomme ich tatsächlich ein Person-Objekt zurück, dessen Name auf Null gesetzt ist. Gibt es eine Möglichkeit, den Mapper so zu konfigurieren, dass stattdessen eine Ausnahme ausgelöst wird oder eine Nullreferenz anstelle einer Person zurückgegeben wird? Ich möchte, dass Jackson fehlende Felder als Fehler betrachtet und keine expliziten Null-Überprüfungen der Felder des resultierenden Objekts durchführen möchte.

    
mushroom 05.02.2015, 23:15
quelle

2 Antworten

1

Leider wird das in diesem Moment von Jackson nicht unterstützt.

Lösung könnte sein, die Validierung in Ihrem Konstruktor hinzuzufügen. Im Idealfall, wenn Sie nicht möchten, dass diese Werte als Nullen serialisiert werden, bedeutet dies, dass Sie sie nicht als Nullen haben sollten (auf andere Weise konstruiert). Zum Beispiel

%Vor%

Dies passt jedoch möglicherweise nicht in allen Situationen, insbesondere wenn Sie das Objekt nicht über Serialisierung / Deserialisierung verwenden.

Obwohl sie required -Attribut in @JsonProperty Annotation haben, wird sie bei der Deserialisierung überhaupt nicht unterstützt und nur zum Dekorieren von JSON-Schemas eingeführt. Sehen Sie sich das Thema

an     
vtor 11.02.2015, 09:13
quelle
15

Ab Jackson 2.6 ist ein Weg , aber es funktioniert nicht bei Klassenattribut-Annotationen , nur Konstruktorannotationen :

%Vor%     
zopieux 21.01.2016 10:47
quelle

Tags und Links