私はJSONオブジェクトにのようなものがあります。ジャクソンの列挙型フィールドを無視する方法JSONからオブジェクトへのマッピング?
:私は上記のJSONをマップしようとしていますなど{"name":"John", "grade":"A"}
または
{"name":"Mike", "grade":"B"}
または
{"name":"Simon", "grade":"C"}
を
@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;
}
}
上記のマッピングが正常に動作しますが、将来的にはより多くの「グレード」タイプは、既存のマッピングを破壊し、次の例外
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
をスローD、Eなどがへの道はありましょうがあるだろう列挙型で未知のフィールドを無視しますか?私はあなたがGrade
列挙のための外部deserializerを定義するべきだと思い
おかげ
注釈 '@ JsonIgnoreProperties'は、' Enum'型の期待通りの動作をしません。未知のPOJOプロパティを無視することしかできません(現在)。しかし、私はこれが改善アイデアとして理にかなっていると思います。だから、[Jackson databind](https://github.com/FasterXML/jackson-databind)プロジェクトで問題を提出できますか?もしそうなら、それはおそらくジャクソン2.3で追加することができますか? – StaxMan
答えは少し冗長です。最も簡単で簡単な解決策を探している人には、 'READ_UNKNOWN_ENUM_VALUES_AS_NULL' [脱直列化機能](https://github.com/FasterXML/jackson-databind/wiki/Deserialization-Features#value-conversions)をtrueに設定してください。 – Jonik