JSONTypeInfo不忽略继承映射中的属性

时间:2016-05-04 13:18:48

标签: java json serialization jackson jsonserializer

我正在使用以下依赖关系进行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;
}

我们有两个子类OneTwo Parent扩展。

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

问题是将JSON转换为类jackson 删除属性isOne 。有没有办法不删除该属性。只要我能有实际属性,它就不推荐任何虚拟财产。

1 个答案:

答案 0 :(得分:2)

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

试试这个:

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