杰克逊将字符串反序列化为默认枚举

时间:2017-12-22 08:19:42

标签: java json serialization enums jackson

我将字段从JSON反序列化为我的自定义枚举。我的要求是,如果JSON字段字符串不是我的枚举的一部分,它应该将其反序列化为DEFAULT枚举值。

这是我的枚举。

public enum Status {

    Y("Y"),

    N("N"),

    U("U"),

    A("A"),

    C("C"),

    R("R"),

    UNKNOWN(/* any other string value */) // this is what i need


    private final String textualValue;


    Status(String textualValue) {
        this.textualValue = Objects.requireNonNull(textualValue);
    }

    @Override
    public String toString() {
        return textualValue;
    }

所以,基本上如果JSON包含类似{"status":"X"}的内容,我希望将其反序列化为Status.UNKNOWN,就像现在一样。 {“status”:“A”}反序列化为Status.A

我正在与ObjectMapper进行映射。

protected static final ObjectMapper jsonMapper =
        new ObjectMapper()
        .registerModule(new Jdk8Module())
        .enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING)
        .enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);

这样的事情可能吗?

0 个答案:

没有答案