将JSON请求中的字符串映射到请求POJO中的Enum

时间:2018-02-21 15:32:19

标签: java enums jackson jackson-databind

我有一个Enum,它是这样的:

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进行序列化。有没有办法将请求中的此字符串字段直接映射到此枚举。

1 个答案:

答案 0 :(得分:2)

您可以在enum内为String内的新方法使用levelCode注释。该方法应该返回enum,这只是示例中的int。如果这样做,这解决了序列化和反序列化的问题。

只是为了让您了解情况,如果@JsonCreator由于杰克逊的错误导致<a>字段,这将无法正常工作。在这种情况下,您需要使用href来遵循不同的方法。

您可以参考my blog了解实施示例。