Java Jackson多态反序列化字段错误

Java Jackson多态反序列化字段错误,java,spring,polymorphism,jackson,Java,Spring,Polymorphism,Jackson,尝试将json反序列化为抽象类型时出错 代码: @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class") public abstract class Animal { } public class Dog extends Animal { } public class Zoo { Animal a; } @RequestMapping(value = "

尝试将json反序列化为抽象类型时出错

代码:

@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class")
public abstract class Animal
{
}

public class Dog extends Animal
{
}

public class Zoo
{
    Animal a;
}

@RequestMapping(value = "/zoos", method = RequestMethod.POST)
public void create(@RequestBody Zoo zoo)
{
  ...
}
当我将以下json发布到zoos时:

{
    "@class": "com.example.Dog",
    "a": {}
}
我得到一个错误: org.codehaus.jackson.map.exc.UnrecognizedPropertyException:无法识别的字段“@class”(class.com.example.Zoo),未标记为可忽略

我做错了什么?

好吧,我是个白痴:

json应该是:

{   
    "a": {
        "@class": "com.example.Dog"
     }
}

因为@class属于类型animal。

FWIW,我认为有一个新的配置将type元素外部化到JSON中与目标对象相同的嵌套级别。换句话说,它将type元素移到目标对象之外。