java - found - Wie deaktiviere ich fail_on_empty_beans in Jackson?




spring jackson fail_on_empty_beans (6)

Wie deaktiviere ich mit jackson 2.1 die fail_on_empty beans , die die Fehlermeldung scheinbar deaktivieren soll?

Ich gehe davon aus, dass dies nur das Einfachste auf der Welt ist, aber zur Hölle ist es spät und ich konnte kein einfaches Tutorial oder etwas besonders Offensichtliches von der api . SerializationFactory ? Warum würden sie es so unintuitiv machen und dann die Fehlermeldung so einfach erscheinen lassen?

Obwohl ich die Fehlermeldung mag, ich meine, es ist besser als eine NPE.

Ich gehe davon aus, dass es eine Möglichkeit gibt, dies mithilfe von Anmerkungen zu tun - aber ich bin nicht scharf darauf, sie überhaupt für die simple Arbeit zu verwenden, die ich mache!


Hinzufügen einer Lösung für ein anderes Problem, aber eines, das den gleichen Fehler aufweist ... Seien Sie vorsichtig, wenn Sie json on the fly konstruieren (als API-Antworten oder was auch immer), um doppelte Anführungszeichen in Ihren String-Elementen zu vermeiden. Möglicherweise konsumieren Sie Ihren eigenen missgebildeten JSON.


In meinem Fall habe ich die @ JsonProperty-Annotation in eines der Felder vergessen, das diesen Fehler verursacht hat.


Sie können die Klasse wahrscheinlich auch mit @JsonIgnoreProperties(ignoreUnknown=true) annotieren, um die in der Klasse nicht definierten Felder zu ignorieren


Sie können dies pro Klasse oder global tun, glaube ich.

Pro Klasse versuchen Sie @JsonSerialize über die Klassendeklaration.

Für einen Mapper gibt es hier ein Beispiel:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
// do various things, perhaps:
String someJsonString = mapper.writeValueAsString(someClassInstance);
SomeClass someClassInstance = mapper.readValue(someJsonString, SomeClass.class)

Der folgende -Link enthält ein Beispiel für ein Spring-Projekt.

Für REST mit Jersey erinnere ich mich nicht von ganzem Herzen, aber ich glaube es ist ähnlich.

Ein paar Links, die ich ausgegraben habe: (bearbeitete den ersten Link, weil das Codehaus heruntergefahren ist).


Wenn Sie Spring Boot verwenden, können Sie die folgende Eigenschaft in der Datei application.properties festlegen. spring.jackson.serialization.FAIL_ON_EMPTY_BEANS = false


Wenn Sie org.codehaus.jackson.map.ObjectMapper verwenden, dann pls. benutze die folgenden Zeilen

mapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);






jackson