Ich benutze Spring Boot mit Jackson, um eine API zur Verfügung zu stellen. In meiner Datenbank gibt es ein Generalisierungs-/Spezialisierungsfeld. Das heißt, ich habe zwei Felder: einen Wert und ein Feld, das den Datentyp des Wertes definiert.Jackson: Serialize eine EER Spezialisierung
So sieht mein Unternehmen dies wie:
public class Example{
private String value;
private String type;
// getters and setters
}
Zum Beispiel mit diesen drei Einträge:
"1234";"Integer"
"example string";"String"
"true";"Boolean"
Jackson diese Serialisierung wie folgt:
[{
"value": "1234",
"type": "Integer"
},
{
"value": "example string",
"type": "String"
},
{
"value": "true",
"type": "Boolean"
}]
Dies ist, was ich expteced , aber ich brauche das:
[{
"value": 1234,
"type": "Integer"
},
{
"value": "example string",
"type": "String"
},
{
"value": true,
"type": "Boolean"
}]
Also sollten die Werte entsprechend dem Wert des Feldes "type" serialisiert werden. Ich weiß, dass ich einen Serializer an das Feld "Wert" anhängen kann, aber ich kann nicht auf das Feld "Typ" dort zugreifen, um zu wissen, wie man den Wert serialisiert.
Hallo! Dank dafür. Ist es auch möglich, das Standardverhalten für alle anderen Felder von "value" zu verwenden, ohne explizit festzulegen, wie mit jedem Feld umgegangen werden soll? Meine Entity hat viele Felder und ich möchte sie nicht in mehreren Klassen auflisten/verwalten (Entity, Serializer und Deserializer ...) – Indivon
@Indivon Ich habe die Antwort mit der neuen Option aktualisiert und yep kann die Standard-Deserialisierung verwenden Ihr benutzerdefinierter Deserializer. Geben Sie mir eine Minute, ich werde die Informationen aktualisieren – varren
@Indivon aktualisiert meinen Beitrag, werfen Sie einen Blick, wahrscheinlich gibt es einige andere Option, die Sie versuchen könnten – varren