我有一个类似于JSON对象的东西:
{"name":"John", "grade":"A"}
或者{"name":"Mike", "grade":"B"}
或者{"name":"Simon", "grade":"C"}
我正在尝试将上述JSON映射到:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Employee{
@JsonIgnoreProperties(ignoreUnknown = true)
public enum Grade{ A, B, C }
Grade grade;
String name;
public Grade getGrade() {
return grade;
}
public void setGrade(Grade grade) {
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
上述映射功能正常,但未来可能会有更多的“等级”类型,比如D、E等,这将破坏现有的映射并抛出以下异常:
05-08 09:56:28.130: W/System.err(21309): org.codehaus.jackson.map.JsonMappingException: Can not construct instance of Employee from String value 'D': value not one of declared Enum instance names
在枚举类型中是否有一种方法可以忽略未知字段?
谢谢
@JsonIgnoreProperties
在Enum
类型上无法按照您期望的方式工作;它目前只允许忽略未知的POJO属性。但我认为这是一种改进的想法。所以,您能否在Jackson databind项目中提出一个问题?如果可以的话,也许它可以加入到Jackson 2.3中? - StaxManREAD_UNKNOWN_ENUM_VALUES_AS_NULL
反序列化功能设置为true即可。请注意不要修改原始意思。 - Jonikmapper.enable(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL);
- Matt