如何在将Json反序列化为Java对象时跳过使用@JsonCreator for Enums?

时间:2017-05-06 18:19:43

标签: jackson deserialization objectmapper fasterxml jsonschema2pojo

Enum类,ColorName是使用ColorName json file中的jsonschema2pojo生成的。默认情况下,Enum类默认使用带@JsonCreator注释的Value方法。

@JsonCreator
public static ColorName fromValue(String value) {
    ColorName constant = constants.get(value);
    if (constant == null) {
        throw new IllegalArgumentException(value);
    } else {
        return constant;
    }
}

如果使用此类将json字符串反序列化为Java对象,并且如果在json中传递了新的/错误的Enum值,则反序列化将失败并显示IllegalArgumentException() 当尝试使用下面的方法避免此错误时,它无法正常工作

  

ObjectMapper om = new ObjectMapper();       om.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL,true);

这个问题似乎是因为@JsonCreator总是很荣幸。有没有办法指示反序列化器跳过这个或忽略未知的枚举值?

1 个答案:

答案 0 :(得分:0)

https://github.com/FasterXML/jackson-databind/pull/1642/files以来,对Jackson库本身的更改已解决了该问题。

根据https://github.com/FasterXML/jackson-databind/pull/1642,它已被反向移植到Jackson 2.8.9,因此请尝试升级到该版本。