Джексон: Сериализация и десериализация значений перечисления как целых

Рассмотрим следующее перечисление и класс:

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;
    }
}

И рассмотрим следующую основную функцию:

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);
}

В настоящее время выход этой основной:

{"name" : "Machine 1", "numCores" : 8, "state" : "OFF"}

Этот вывод мне не подходит, так как вместо строки"OFF" заstateЯ хотел бы, чтобы это было1, который является порядковым значениемOFF в перечисленииState.

Итак, фактический результат, который я хочу получить:

{"name" : "Machine 1", "numCores" : 8, "state" : 1}

Есть ли какой-нибудь элегантный способ заставить его так себя вести?

Ответы на вопрос(5)

Ваш ответ на вопрос