Java 无字段的jackson多态反序列化

Java 无字段的jackson多态反序列化,java,json,serialization,jackson,deserialization,Java,Json,Serialization,Jackson,Deserialization,我能够在jackson中尝试多态反序列化的简单案例 @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true) @JsonSubTypes({ @Type(value = A.class, name = "a"), @Type(value = B.class, name = "b") }) Class Base { priv

我能够在jackson中尝试多态反序列化的简单案例

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY,
  property = "type", visible = true)
@JsonSubTypes({
@Type(value = A.class, name = "a"),
@Type(value = B.class, name = "b")
})
Class Base {
  private String type;
...
}

Class A extends Base {
...
}

Class B extends Base {
...
}
但我面临的问题是,我无法控制传入的Json。json看起来像

{“类型”:a,“参数”:{..类型a..}的字段

{“type”:b,“params”:{..类型b的字段..}

params
字段可以是A或B类型。
A
B
都继承自
Base
,但决定
类型的列不在
params
字段中

如何配置jackson查看类外的字段,然后确定从中找到答案的实际类型

我们需要将注释放在使用外部属性反序列化的变量上

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
    property = "type")
@JsonSubTypes({
    @Type(value = A.class, name = "a"),
    @Type(value = B.class, name = "b") 
})