无法按预定义值序列化枚举值

时间:2016-07-28 13:50:13

标签: java json enums jackson

我有以下枚举:

public enum ChangeMode {

    None(1), Add(2), Update(3), Delete(4);

    // String value
    public String getStringValue() {
        return name();
    }

    public static ChangeMode getEnumValue(String v) {
        return valueOf(v);
    }

    public static ChangeMode getEnumValue(int intValue) {
        for (ChangeMode x : values())
            if (Objects.equals(x.intValue, intValue))
                return x;

        return null;
    }

    // Int value
    private int intValue;

    private ChangeMode(int intValue) {
        this.intValue = intValue;
    }

    public int getIntValue() {
        return this.intValue;
    }
}

请注意,枚举值从1-4开始,而不是0-3。

我使用的是Wildfly和Jackson。

当我从客户端JSON获取值4时(使用HTTP POST)我收到以下错误:

  

无法从数字构造com.ta9.enums.ChangeMode的实例   value(4):法律指数范围外的指数值[0..3] at [来源:   org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@55a6e779;   line:770,column:26](通过参考链:

0 个答案:

没有答案