Jackson-Mapper-post-Konstrukt
Ich bin mit der Jackson ObjectMapper
Deserialisieren einige JSON in eine Java-Klasse, die wir nennen PlayerData
. Ich möchte hinzufügen, ein bisschen Logik, um die PlayerData
Klasse, zu reparieren, einige Daten nach, die Felder wurden geladen. Zum Beispiel, einige frühe JSON-Dateien verwendet werden, um eine "sex" - flag anstelle von "Geschlecht" falg, so dass, wenn die sex-flag gesetzt ist, aber die gender-flag nicht gesetzt ist, würde ich mag, um den Wert für das Feld Geschlecht zu sein, den Wert des sex-Bereich.
Gibt es irgendeine Art von @PostConstruct oder @Nachlast Anmerkung, die ich anbringen könnte, um eine Methode? Oder vielleicht eine Schnittstelle, die könnte ich umsetzen? Ich habe nicht bemerkt, eine in der Dokumentation, aber es schien wie eine offensichtliche Funktion.
- Dieser Vorschlag perfekt für mich gearbeitet, als Ersatz für
@PostConstruct
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand dies durch eine link in die Kommentare (credit: fedor.below). Dies scheint Ihnen zu erlauben, code auszuführen, post-Konstrukt.
Wenn Sie nicht mit der
@JsonCreator
, dann Jackson wird mithilfe der setter-und getter-Methoden zum festlegen der Felder.Also, wenn Sie definiert die folgenden Methoden angenommen, Sie haben
Sex
undGender
enums:es funktionieren würde.
Update: finden Sie alle die Anmerkungen der Jackson Bibliothek hier.
Update2: Andere Lösung:
JsonProperty
da es standardmäßig erkennt alle Getter (einschließlichisSomething()
) und setters geeignet für Serialisierung/Deserialisierung.@JsonCreator
annotierten Konstruktor darf pro Klasse. So eine@JsonFactory
factorory Methode und eine@JsonCreator
Konstruktor kann das problem lösen.Dies ist etwas, das eigentlich vorgeschlagen worden, paar mal früher. Also, vielleicht ist die Einreichung eines RFE Sinn machen würde; es gibt mehrere Möglichkeiten, in denen das funktionieren könnte: offensichtlich diejenigen, die Möglichkeit zum kommentieren geben (@JsonPostProcess(Processor.class)) und die Fähigkeit zu registrieren, post-Prozessor durch das Modul-API (so, dass es im Grunde ein Rückruf, wenn Jackson Konstrukte deserializer zu lassen-Moduls angeben, post-Prozessor zu verwenden, falls vorhanden). Aber vielleicht gibt es noch bessere Möglichkeiten, dies zu tun.