JSON-Serialisierung von Regelsatz-XOMs
Jeder Regelsatzparameter wird als JSON-Name/Wert-Paar geschrieben. Wenn die Standardserialisierung nicht die Ergebnisse liefert, die Sie für Ihre Klassen erwarten, können Sie den Serialisierungsprozess mit Jackson- oder JAXB-Annotationen anpassen. Jackson-Annotationen werden vor JAXB-Annotationen mit gleicher Rangfolge angewendet. Einige JAXB-Annotationen werden nicht unterstützt oder haben keine JSON-Entsprechung.
Ein leerer Konstruktor (öffentlich oder privat) ist für die Deserialisierung mit Jackson erforderlich.
Jackson-Version
Es sind aktuell zwei Hauptversionen von Jackson verfügbar: Version 1.x und Version 2.x. Aufgrund von Unterschieden beim Packen und bei der API sind diese beiden Releases nicht kompatibel. Der REST-Service für die Regelsatzausführung verwendet Jackson 2.x. Das bedeutet, Sie müssen Jackson 2.x verwenden, um die Java-XOM-Klassen zu annotieren.
Für Informationen über Jackson-Anmerkungen siehe Jackson-Anmerkungen
.
- Beispiel für Jackson-Annotation für Datum
- Ein Datum wird standardmäßig als Anzahl der Sekunden seit der Epoche serialisiert. Wenn Sie ein besser lesbares Format wünschen, können Sie Ihr Datumsfeld mit Anmerkungen versehen:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd@HH:mm:ss.SSSZ")Das Muster folgt SimpleDateFormat. Wenn das Datum ein Datum ohne Uhrzeit ist, können Sie die folgende Anmerkung verwenden:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
Bekannte Einschränkungen
- Die JSON-Serialisierung kann ein Speicherleck verursachen und zu einem Ausfall des Anwendungsservers führen. Standardmäßig ermöglicht HTDS, dass der Inhalt des Cachespeichers für Probleme alle 24 Stunden gelöscht wird. Passen Sie diese Eigenschaft an Ihre Anwendungsnutzung an.
- Statische verschachtelte Klassen werden unterstützt. Nicht statische verschachtelte Klassen (auch als innere Klassen bezeichnet) werden nicht unterstützt.
- Zyklische Links zwischen drei oder mehr Klassen werden nicht unterstützt.
- In der offiziellen Jackson-Dokumentation wird von der Verwendung von java.sql.date abgeraten. Weitere Informationen finden Sie im Jackson JSON Processor Wiki.
- Wenn Sie primitive Java-Typen als Eingabewerte in Ihren Ausführungsanforderungen verwenden, vergewissern Sie sich, dass jeder Wert innerhalb des entsprechenden Datentypbereichs liegt. Andernfalls erhalten Sie möglicherweise eine unerwartete Ausgabe.