【问题标题】:Map string in JSON request to Enum in Request POJO将 JSON 请求中的字符串映射到 Request POJO 中的 Enum
【发布时间】:2018-08-01 06:10:52
【问题描述】:

我有一个像这样的枚举:

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)映射到此枚举。我正在使用杰克逊进行序列化。有没有办法将请求中的这个字符串字段直接映射到这个枚举。

【问题讨论】:

标签: java enums jackson jackson-databind


【解决方案1】:

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

只是为了让您了解情况,如果由于 Jackson 的错误,enum 有一个 int 字段,这将不会以同样的方式工作。在这种情况下,您需要使用 @JsonCreator 遵循不同的方法。

实现示例可以参考my blog

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2016-12-21
    • 2017-03-04
    相关资源
    最近更新 更多