In einem benutzerdefinierten Deserializer für eine Entity möchte ich die Deserialisierung von (einigen der) Feldern rekursiv so aufrufen, dass @ JsonFormat-Annotationen berücksichtigt werden. dies ist konkreter, wie die Deserializer wie folgt aussehen:Wie kann Jackson Deserializer Felder rekursiv deserialisieren, die @JsonFormat-Anmerkungen berücksichtigen?
public class DealPatchDeserializer extends JsonDeserializer<DealPatch> {
public DealPatch deserialize(JsonParser p, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
JsonNode root = p.readValueAsTree();
JsonNode redeemableFromNode = root.path("redeemableFrom");
JsonParser redeemableFromParser = redeemableFromNode.traverse(p.getCodec());
Date date = redeemableFromParser.readValueAs(Date.class);
}
In diesem Beispiel die JsonParser.readValueAs() nicht übernimmt die kommentierten
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd.MM.yyyy")
private Date redeemableTo;
Muster berücksichtigt, und erzeugen somit eine Ausnahme wegen der unbekanntes (deutsches) Datumsformat
Gibt es eine Möglichkeit, Felder eines Objekts zu deserialisieren, so dass es die kommentierten Formate berücksichtigt?
Nein. Das @ JsonFormat wird nicht verwandt und als Konsequenz gibt es eine HttpMessageNotReadableException, da der Wert nicht zu einem Datum deserialisiert werden kann. Mein Punkt ist: Ich habe ein Feld, das eine Formatanmerkung hat, wie kann ich dieses Feld zur Deserialisierung aufrufen, so dass das angegebene Format verwendet wird? – Gregor