我正在使用 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 的理解错了吗?