我用 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重复条目,我需要能够读取值,这就是为什么这个字段存在于类中
1条答案
按热度按时间vbkedwbf1#
你在实体中有一个“type”字符串,你把它保留为null;这完全独立于你定义为java继承的属性=“type”,所以两者都写出来了。
你不需要也不应该有一个String类型属性-每个子类应该知道它是什么类型的基础上的类类型的对象。如果你必须,让每个实现一个getType方法返回类适当的类型字符串,即
字符串