我有一个枚举,它是这样的:

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以获得实现示例。

07-25 20:18