2017-10-24 2 views
1

Ich habe gesucht und gefunden Jackson ObjectMapper throwing NullPointerException even with NON_NULL, aber ich habe keine Kontrolle über die Klasse, um meine Setter zu ändern.Jackson Map Null Json zu Liste

Ich habe mich ist

gegeben
{... "fieldNames": null,...} 

und ich soll es deserialisieren zu

Collection<String> fieldNames 

Ich habe keine Kontrolle über die Klasse oder die json Ich erhalte.

Gibt es eine Einstellung, die ich dafür verwenden kann? Ich habe mir DeserializationFeature angesehen, konnte sie aber nicht finden

Antwort

1

Sie können Mix-Ins verwenden, wenn Sie die Klasse, die Sie deserialisieren, nicht steuern. Sie erwähnen nicht den Namen der Klasse, die Collection<String> fieldNames enthält. Nehmen wir an, es heißt Fields. Dann erstellen Sie eine neue Klasse:

class FieldsMixin { 
    @JsonSetter(nulls = Nulls.SKIP) 
    Collection<String> fieldNames; 
} 

und fügen Sie die mixin Klasse Ihre ObjectMapper es mit der ursprünglichen unmodifizierten Klasse zuzuordnen:

mapper.addMixIn(Fields.class, FieldsMixin.class); 

Dies ist eine neue Funktion in Jackson 2.9 und wie Sie es erraten Überspringen des Aufrufs einer Setter-Methode oder anderweitiges Festlegen eines Felds, wenn der Wert in JSON null ist. Documentation

Verwandte Themen