Serialisieren Sie ein Objekt ohne Daten in Jackson

8

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:

%Vor%

Andere Unterklassen von FeatureExtractor hätten echte Parameter, also würden sie vermutlich ungefähr so ​​aussehen:

%Vor%

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>     

Ryan Gabbard 21.01.2014, 00:12
quelle

3 Antworten

3

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.

    
Ryan Gabbard 23.01.2014, 21:02
quelle
5

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.

    
wmlynarski 05.12.2016 11:11
quelle
0

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 .

    
Vidya 21.01.2014 00:20
quelle

Tags und Links