我的 API 正在接收下面的 json,它基本上是对象列表。第一个对象和第二个对象之间的唯一区别是第一个对象没有任何 json 属性(如源和目标),但本质上包含相同的字段,第二个对象具有源和目标,其结构类似于第一个对象。
"resources":[
{
"reltype": "rel/img",
"id":"be989",
"revision":"0"
},
{
"source":{
"reltype": "rel/img",
"id":"90e989",
"revision":"0"
},
"target":{
"reltype": "rel/img",
"id":"890e989",
"revision":"1"
}
}]
我想区分这两个对象,我在下面尝试过:
public class ResourceDesignator {
@NotBlank
@JsonProperty("reltype")
private String relType;
@JsonProperty("id")
private String id;
@JsonProperty("revision")
private String revision;
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION)
@JsonSubTypes({
@JsonSubTypes.Type(DefaultResource.class),
@JsonSubTypes.Type(ResourceWithSourceAndTargetDesignator.class) }
)
public abstract class Resource {
}
public class DefaultResource extends Resource {
private ResourceDesignator resourceDesignator;
}
public class ResourceWithSourceAndTargetDesignator extends Resource {
@JsonProperty("source")
private ResourceDesignator resourceDesignatorForSource;
@JsonProperty("target")
private ResourceDesignator resourceDesignatorForTarget;
}
但我收到错误嵌套异常是 com.fasterxml.jackson.databind.exc.invalidtypeidexception: 它无法区分 DefaultResource 和 ResourceWithSourceAndTargetDesignator。任何人都可以分享对此的任何想法吗?提前致谢🙏 .