反序列化到没有@type字段的子类

时间:2018-04-28 08:01:13

标签: java spring-boot jackson

说我有通常的Animal,Cat扩展Animal,Dog扩展了Jackson中的动物多态示例,使用@type来区分子类型:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY)
@JsonSubTypes({
    @JsonSubTypes.Type(value = Cat.class, name = "cat"),
    @JsonSubTypes.Type(value = Dog.class, name = "dog")
})
public abstract class Animal {
    ...
}


public class Cat extends Animal {
    ...
}

public class Dog extends Animal {
    ...
}

我在Spring Boot REST API中使用它。

现在我想从一个没有包含@type的JSON字符串反序列化Cat。我知道它是一只猫,因为所有这些特殊的REST API调用都接受了。我如何让杰克逊将这个JSON反序列化为猫,而不是抱怨错过了" @ type"场?

我知道我可以在Cat课程中包含@JsonTypeInfo(use = JsonTypeInfo.Id.NONE),但是当我序列化Cats时,胜利者没有@type字段,我仍然想要。

我是否需要提供自定义反序列化程序?我可以用单一控制器方法吗?

0 个答案:

没有答案