Ist es möglich, ein Objekt ohne Felder in Jackson mit nur Anmerkungen zu serialisieren? Wenn ich versuche, ein solches Objekt ohne Anmerkungen zu serialisieren, bekomme ich:
%Vor% Ich habe die Liste der Jackson-Annotationen untersucht, ohne eine Möglichkeit zu sehen, die Klasse zu kommentieren keine serialisierbaren Daten haben. Ich habe versucht, @JsonCreator
auf den leeren Konstruktor zu setzen (nicht erwartet, dass es funktioniert, da es eine Deserialisierungs-Annotation ist), und ich habe den gleichen Fehler bekommen. Es gibt keine Accessoren oder Felder, in die @JsonProperty
eingefügt werden kann. Irgendwelche Ideen?
Update: Der Grund dafür ist, dass ich eine Liste von Objekten habe, die Transformationen darstellen, die auf einen bestimmten Datentyp angewendet werden können. Einige dieser Transformationen sind durch Parameter definiert, die serialisiert werden müssen, aber einige davon sind parameterlos (die fraglichen datenlosen Objekte). Ich möchte eine Sequenz dieser Transformationen serialisieren und deserialisieren können. Außerdem verwende ich DefaultTyping.NON_FINAL
, damit der Klassenname serialisiert wird.
Update: Eine Beispielklasse wäre
%Vor% Mir ist es egal, wie der JSON dafür aussieht, solange ich List<FeatureExtractor>
s richtig deserialisieren kann. Mein Eindruck ist, dass das erwartete JSON bei der Standardeingabe etwa so aussehen würde:
Andere Unterklassen von FeatureExtractor
hätten echte Parameter, also würden sie vermutlich ungefähr so aussehen:
Ich denke, ich könnte @JsonValue
für einige toJSONString()
-Methode verwenden, um {}
zurückzugeben, aber wenn möglich, möchte ich solche Hacker vor Endbenutzern verstecken, die FeatureExtractor
Unterklassen erstellen werden / p>
Das Hinzufügen der folgenden Anmerkung zur Klasse scheint das Problem zu lösen:
%Vor%Hinzufügen einer nicht verwandten kommentierten wie
%Vor%scheint es auch zu beheben. Dies scheint mit der Behauptung im JIRA-Ticket übereinzustimmen, dass das Hinzufügen einer Jackson-Annotation zur Klasse die Ausnahme verhindert. Es scheint jedoch, dass das Hinzufügen von Anmerkungen innerhalb der Klasse nicht erfolgt.
Sie müssen Ihren Objekt-Mapper konfigurieren, um diesen Fall zu unterstützen.
%Vor%Die Dokumentation dieses Features finden Sie hier: Bei leeren Balken fehlgeschlagen
Feature, das bestimmt, was passiert, wenn keine Accessoren für a gefunden werden Geben Sie (und es gibt keine Anmerkungen, um anzuzeigen, dass es gemeint ist serialisiert). Wenn aktiviert (Standard), wird eine Ausnahme ausgelöst, um anzuzeigen diese als nicht serialisierbare Typen; Wenn sie deaktiviert sind, werden sie als serialisiert leere Objekte, d. h. ohne Eigenschaften.
Ich bin mir nicht sicher, ob ich Ihre Frage habe, aber vielleicht möchten Sie JsonInclude.Include.NON_DEFAULT , JsonInclude.Include.NON_NULL oder JsonInclude.Include. NON_EMPTY .
Tags und Links java serialization jackson