Nehmen wir an, ich habe eine enum Status
, die so aussieht.Jackson deserialize verschiedene Saiten auf die gleiche Enum-Konstante
public enum Status {
SUCCESS,
FAIL,
RETRY,
UNKNOWN
}
Ich erhalte status
Eigenschaft aus einer JSON, die wie folgende Beispiele aussehen könnte.
{"status":"success"}
// gültig Fall deserialisieren zuStatus.SUCCESS
{"status":"fail"}
// gültig Fall deserialisieren zuStatus.FAIL
{"status":"retry"}
// gültig Fall deserialisieren zuStatus.RETRY
Aber jeder andere Wert sollte auf Status.UNKNOWN
deserialisiert werden. Beispiele.
{"status":"blabla"}
// ungültig Fall deserialisieren zuStatus.UNKNOWN
{"status":"John"}
// ungültig Fall deserialisieren zuStatus.UNKNOWN
Ich weiß, dass ich es durch das Schreiben eines benutzerdefinierten Deserializer tun könnte, aber ich würde versuchen, Um das zu vermeiden, weil ich viele, viele enums in meinem Programm habe und einen eigenen Deserializer für jeden von ihnen benötige, wäre das ein Overkill.
Idealerweise eine Art Konstruktor aus Regex, der mit einer beliebigen Zeichenfolge übereinstimmt (außer "success", "fail" und "retry").
Gibt es eine Möglichkeit, es mit Jackson zu tun, ohne Custom Deserializer zu schreiben?
Könnte ich fragen, wie Sie diese Frage herausfinden? Ich habe zwei Tage damit verbracht, den Quellcode von jackson-databind zu finden, aber nichts gefunden .... – LoveTW