Полиморфная десериализация Джексона без информации о типе - PullRequest
0 голосов
/ 21 мая 2018

У меня есть объекты json, представляющие особый случай типа объекта:

interface X {
   Map<String, Object> extraInfo;
}

Подклассы:

class Y implements X {
  String foo;
}

class Z implements X {
  String bar;
}

В основном подклассы различаются на основе имен свойств fooи бар в объектах JSON.Как я могу настроить Джексона для десериализации этих объектов?

Я попробовал следующее, но оно не работает:

@JsonSubTypes({@JsonSubTypes.Type(value = Y.class),
           @JsonSubTypes.Type(value = Z.class)})
interface X {
  Map<String, Object> extraInfo;
}

@Getter
class Y implements X {
  public Y(@JsonProperty(value="foo") String foo) {
    this.foo = foo;
  }
  String foo;
}


@Getter
class Z implements X {
  public Z(@JsonProperty(value="bar") String bar) {
    this.bar = bar;
  }
  String bar;
}

Может кто-нибудь указать, что мне здесь не хватает?

...