没有类型信息的Jackson Polymorphic反序列化

时间:2018-05-21 16:37:41

标签: java json jackson jackson-databind

我有json对象表示对象类型的特殊情况:

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

子类如下:

class Y implements X {
  String foo;
}

class Z implements X {
  String bar;
}

基本上,子类是根据json对象中的属性名称foo和bar来区分的。如何配置jackson反序列化这些对象?

我尝试了以下操作,但它不起作用:

@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;
}

有人可以指出我在这里失踪了吗?

0 个答案:

没有答案