考虑以下枚举和类:
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;
}
}
并考虑以下主要功能:
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);
}
目前,这个主要的输出是:
{"name" : "Machine 1", "numCores" : 8, "state" : "OFF"}
此输出对我 state
,因为我希望它是 0
的 --- 的字符串 "OFF"
而不是 OFF
在枚举中 State
。
所以我想要得到的实际结果是:
{"name" : "Machine 1", "numCores" : 8, "state" : 0}
有没有一些优雅的方法让它表现得像这样?
原文由 SomethingSomething 发布,翻译遵循 CC BY-SA 4.0 许可协议
它应该通过指定
JsonValue
映射器来工作。这也适用于反序列化,如
@JsonValue
注释的 Javadoc 中所述: