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总是很荣幸。有没有办法指示反序列化器跳过这个或忽略未知的枚举值?
答案 0 :(得分:0)
自https://github.com/FasterXML/jackson-databind/pull/1642/files以来,对Jackson库本身的更改已解决了该问题。
根据https://github.com/FasterXML/jackson-databind/pull/1642,它已被反向移植到Jackson 2.8.9,因此请尝试升级到该版本。