JSONTypeInfo 不忽略继承映射中的属性
Posted
技术标签:
【中文标题】JSONTypeInfo 不忽略继承映射中的属性【英文标题】:JSONTypeInfo to not ignore property in inheritance mapping 【发布时间】:2016-08-29 23:12:59 【问题描述】:我正在使用以下依赖项进行 JSON 序列化/反序列化
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.4</version>
</dependency>
我有继承映射。
下面是Parent
类。
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "isOne")
@JsonSubTypes( @Type(value = One.class, name = "true"), @Type(value = Two.class, name = "false") )
public class Parent extends AbstractValueObject
private Boolean isOne;
我们有两个子类One
和Two
由Parent
扩展。
当我在属性isOne
的帮助下序列化/反序列化时,此映射正在工作。
但问题是当 JSON 转换为 jackson 类时删除了属性isOne
。有什么方法不会删除该属性。它不推荐任何虚拟属性,只要我可以拥有实际属性。
【问题讨论】:
【参考方案1】:根据JsonTypeInfo 的文档,您可以使用visible=true
试试这个:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "isOne", visible = true)
【讨论】:
以上是关于JSONTypeInfo 不忽略继承映射中的属性的主要内容,如果未能解决你的问题,请参考以下文章
使用JsonTypeInfo从Jackson序列化中删除基类名称