Jackson: Aufzählungswerte als Ganzzahlen serialisieren und deserialisieren
Betrachten Sie die folgende Aufzählung und Klasse:
public enum State {
ON,
OFF,
UNKNOWN
}
public class Machine {
String name;
int numCores;
State state;
public Machine(String name, int numCores, State state) {
this.name = name;
this.numCores = numCores;
this.state = state;
}
}
Und betrachten Sie die folgende Hauptfunktion:
public static void main(String args[]) {
Machine m = new Machine("Machine 1", 8, OFF);
ObjectMapper mapper = new ObjectMapper();
String machineAsJsonString = mapper.writeValueAsString(m);
System.out.println(machineAsJsonString);
}
erzeit ist die Ausgabe dieses Hauptgeräts:
{"name" : "Machine 1", "numCores" : 8, "state" : "OFF"}
Diese Ausgabe ist nicht gut für mich, da anstelle der Zeichenfolge"OFF"
zumstate
, Ich möchte, dass es @ i1
, das ist der Ordnungswert vonOFF
in der AufzählungState
.
So ist das tatsächliche Ergebnis, das ich erhalten möchte:
{"name" : "Machine 1", "numCores" : 8, "state" : 1}
Gibt es eine elegante Möglichkeit, das Verhalten so zu gestalten?