嵌套异常是 com.fasterxml.jackson.databind.exc.invalidtypeidexception: 无法解析子类型

问题描述 投票:0回答:0

我的 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。任何人都可以分享对此的任何想法吗?提前致谢🙏 .

json
© www.soinside.com 2019 - 2024. All rights reserved.