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?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage