1
反序列化派生類我有一個基類,如下所示:使用傑克遜的java
public class Criteria {
private CriteriaType type;
//getters & setters
public enum CriteriaType {
Condition, Medication
}
}
和派生類
public class ConditionCriteria extends Criteria {
private String a;
//getters & setters
}
public class MedicationCriteria extends Criteria {
private String b;
//getters & setters
}
和另一類
public class CriteriaGroup {
Criteria criteria;
//getters & setters
}
我發送串行化JSON字符串CriteriaGroup
類到服務器使用傑克遜(de)序列化。並在服務器上的服務看起來像:
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createCriteriaGroup(CriteriaGroup criteriaGroup) {...
然而,傑克遜並沒有反序列化JSON轉換爲一個派生類。如何根據type
字段Criteria
類來實現此映射?
謝謝..
反序列化ConditionCriteria的JSON,當我得到這樣一個例外:
SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "a" (Class Criteria), not marked as ignorable
at [Source: [email protected]; line: 1, column: 92] (through reference chain: CriteriaGroup["criteria"]->Criteria["a"])
at org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)
at org.codehaus.jackson.map.deser.StdDeserializationContext.unknownFieldException(StdDeserializationContext.java:267)
....
你有例外嗎? – micha
添加了異常的開始,當我有一個ConditionCriteria類的反序列化 – suat
這是類似於你的問題? http://stackoverflow.com/questions/1325074/using-jackson-objectmapper-to-serialize-the-subclass-name-into-json-not-the-sup –