jackson 多态类的类型键重复

5t7ly7z5  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(145)

我用 Spring Boot 3.1.2

@Data
public class DefaultAccount  extends AbstractAccount{
}

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, visible = true, property = "type")
@JsonSubTypes({
        @JsonSubTypes.Type(value = DefaultAccount.class, name = "default")
})
@Data
public abstract class AbstractAccount {

    private String type;

}

字符串
当我显示帐户时,我看到键入键重复

{
    "type": "default",
    "type": null
}


我做了一个测试,在JsonTypeInfo中我改变了类型2的属性,在AbstractAccount类中做同样的事情,并得到

{
    "type2": "default",
    "type2": null
}


看起来像Jackson重复条目,我需要能够读取值,这就是为什么这个字段存在于类中

vbkedwbf

vbkedwbf1#

你在实体中有一个“type”字符串,你把它保留为null;这完全独立于你定义为java继承的属性=“type”,所以两者都写出来了。
你不需要也不应该有一个String类型属性-每个子类应该知道它是什么类型的基础上的类类型的对象。如果你必须,让每个实现一个getType方法返回类适当的类型字符串,即

DefaultAccount {
  static final String TYPE = "default";
  public String getType(){ return TYPE ; }
}

字符串

相关问题