Нераспознанное поле "класс" в преобразовании Джексона - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть класс 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"
    },
  ]
}

Когда я пытаюсь преобразовать эту строку json обратно в объект, используя: new ObjectMapper (). ReadValue (s, Zoo.class), я получаю следующую ошибку:

Нераспознанное поле "класс" (класс com.test.Cat), не помеченное как игнорируемое

Не уверен, как настроить маппер для распознавания этого поля как типа подкласса Animal,Я пытался с помощью класса ListofAnimals extends ArrayList {};но это тоже не сработало.

Есть идеи, как выполнить это преобразование?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...