【发布时间】:2013-01-23 15:20:14
【问题描述】:
我有一个基类如下:
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
}
我使用 Jackson 将CriteriaGroup 类的序列化 JSON 字符串发送到服务器以进行(反)序列化。服务器上的服务如下所示:
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createCriteriaGroup(CriteriaGroup criteriaGroup) {...
但是,Jackson 不会将反序列化的 JSON 转换为派生类之一。如何根据Criteria类的type字段实现这个映射?
谢谢..
在反序列化 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: org.eclipse.jetty.server.HttpInput@3c92218c; 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)
....
【问题讨论】:
-
你有例外吗?
-
当我对 ConditionCriteria 类进行反序列化时添加了异常的开头
-
这和你的问题类似吗? stackoverflow.com/questions/1325074/…
标签: java jackson deserialization