Jackson转换中无法识别的字段“类”

时间:2019-04-24 18:27:30

标签: java json jackson

我有一个Java类,其中包含一个子类数组,例如:

@com.fasterxml.jackson.annotation.JsonTypeInfo(use = com.fasterxml.jackson.annotation.JsonTypeInfo.Id.CLASS, include = com.fasterxml.jackson.annotation.JsonTypeInfo.As.PROPERTY, property = "class", visible = true)
public class Zoo {
  Date stamp=new Date();

  public Date getStamp() {
    return stamp;
  }

  public void setStamp(Date stamp) {
    this.stamp = stamp;
  }

  List<Animal> animals;

  public List<Animal> getAnimals() {
    return animals;
  }

  public void setAnimals(List<Animal> animals) {
    this.animals = animals;
  }
}

当我用多种动物类型实例化此类并使用杰克逊的新ObjectMapper()。writeValueAsString(zoo)对其进行转换时,我得到以下字符串:

{
  "stamp": 1556129201484,
  "animals": [
    {
      "class": "com.test.Cat",
      "title": "Tom"
    },
    {
      "class": "com.test.Dog",
      "title": "Jerry"
    },
  ]
}

当我尝试使用新的ObjectMapper()。readValue(s,Zoo.class)将此json字符串转换回对象时,出现以下错误:

无法识别的字段“类”(com.test.Cat类),未标记为可忽略

不确定如何配置映射器以将该字段识别为Animal的子类类型。我尝试使用类ListofAnimals扩展了ArrayList {};但这也不起作用。

关于如何执行此转换的任何想法?

0 个答案:

没有答案