【发布时间】:2013-09-12 06:57:55
【问题描述】:
我正在使用 Jackson 来解析我无法控制的 JSON。 JSON 如下所示:
{
"status":"0"
"type":"type1"
"info": {
// additional fields
}
}
我的班级是这样的
public class Response {
private String status;
private String type;
private Info info
}
我使用的 Info 的子类取决于 type 属性,所以我对 info 的映射是
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type")
@JsonSubTypes(value = {
@JsonSubTypes.Type(value = Type1Info.class, name = "type1"),
@JsonSubTypes.Type(value = Type2Info.class, name = "type2") })
public abstract class Info {
// some fields
}
据我所知,当区分元素与必须转换的元素处于同一级别时,这是使用类型信息的正确方法。但这不起作用,我总是得到同样的错误:
com.fasterxml.jackson.databind.JsonMappingException:意外的令牌 (END_OBJECT),预期的 FIELD_NAME:缺少属性“类型”,即 包含类型 ID
如果我将 EXTERNAL_PROPERTY 更改为 PROPERTY,我仍然会收到相同的错误。我对 EXTERNAL_PROPERTY 的理解有误吗?
【问题讨论】:
-
我对 EXTERNAL_PROPERTY 应该如何工作的概念有这个确切的问题。你在这方面有什么进展吗?
-
不幸的是不是马克。我们最终完全改变了对象模型以避免这个问题。
标签: json polymorphism jackson