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;

我们有两个子类OneTwoParent 扩展。

当我在属性isOne 的帮助下序列化/反序列化时,此映射正在工作。

问题是当 JSON 转换为 jackson 类时删除了属性isOne。有什么方法不会删除该属性。它不推荐任何虚拟属性,只要我可以拥有实际属性。

【问题讨论】:

【参考方案1】:

根据JsonTypeInfo 的文档,您可以使用visible=true

试试这个:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "isOne", visible = true)

【讨论】:

以上是关于JSONTypeInfo 不忽略继承映射中的属性的主要内容,如果未能解决你的问题,请参考以下文章

EF5 和 .NET 4.5 中的未映射错误

使用JsonTypeInfo从Jackson序列化中删除基类名称

jackson使用了@JsonIgnoreType的类被继承了之后子类会被忽略,怎么让子类不被忽略?

大数据JAVA继承上

1.java学习---继承

mybatis怎么忽略映射字段