Ho un qualcosa di JSON oggetto come:Come ignorare i campi enum nella mappatura Jackson JSON-to-Object?
{"name":"John", "grade":"A"}
o
{"name":"Mike", "grade":"B"}
o
{"name":"Simon", "grade":"C"}
ecc
Sto cercando di mappare il JSON sopra per:
@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;
}
}
la mappatura di cui sopra funziona bene, ma in futuro ci saranno più tipi "Grade" diciamo D, E, ecc, che rompe il mapping esistente e lancia la seguente eccezione
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
C'è un modo per ignora i campi sconosciuti con i tipi enum?
Grazie
L'annotazione '@ JsonIgnoreProperties' non funziona come previsto per i tipi' Enum'; solo (al momento) consente di ignorare le proprietà POJO sconosciute. Ma penso che abbia senso come idea di miglioramento. Quindi potresti presentare un problema al progetto [Jackson databind] (https://github.com/FasterXML/jackson-databind)? Se è così, forse potrebbe essere aggiunto in Jackson 2.3? – StaxMan
Le risposte sono un po 'prolisse. Per coloro che cercano la soluzione più rapida e semplice: impostare 'READ_UNKNOWN_ENUM_VALUES_AS_NULL' [funzione di deserializzazione] (https://github.com/FasterXML/jackson-databind/wiki/Deserialization-Features#value-conversions) su true. – Jonik