Jackson:将枚举值序列化和反序列化为整数。

24 浏览
0 Comments

Jackson:将枚举值序列化和反序列化为整数。

考虑以下枚举和类:

public enum State {
    OFF,
    ON,
    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;
    }
}

并考虑以下main函数:

public static void main(String args[]) {
    Machine m = new Machine("Machine 1", 8, State.OFF);
    ObjectMapper mapper = new ObjectMapper();
    String machineAsJsonString = mapper.writeValueAsString(m);
    System.out.println(machineAsJsonString);
}

目前,这个main函数的输出结果是:

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

对我来说,这个输出结果并不好,因为我希望`state`的值是枚举`State`中`OFF`的序数值`0`,而不是字符串`"OFF"`。

因此,我想要得到的实际结果是:

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

有没有一种优雅的方法可以实现这种行为?

0