我有一个枚举,它是这样的:
public enum Level {
HIGH ("hi"),
MEDIUM("med"),
LOW ("lo")
;
private final String levelCode;
private Level(String levelCode) {
this.levelCode = levelCode;
}
}
该枚举是另一个请求类中的元素,例如:
public class RequestPOJO{
Level level;
int somefield1; //other instance varilables
//...... other instance varilables
}
我想将JSON请求中的字符串字段(名称为levelCode)映射到此枚举。我正在使用Jackson进行序列化。有什么方法可以将请求中的此字符串字段直接映射到此枚举。
最佳答案
您可以将@JsonValue
注释用于enum
内部的新方法。该方法应返回String
,在您的示例中,该内容不过是levelCode
。如果这样做,则可以解决序列化和反序列化的问题。
只是为了通知您,如果enum
具有int
字段,则由于Jackson的错误,这将无法以相同的方式工作。在这种情况下,您需要使用@JsonCreator
采用其他方法。
您可以参考my blog以获得实现示例。