简体   繁体   English

杰克逊多态反序列化场错误

[英]Jackson Polymorphic Deserialization Field Errors

I am getting error when trying to deserialize json into an abstract type. 尝试将json反序列化为抽象类型时出现错误。

Code: 码:

@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)
{
  ...
}

When I post the following json to zoos: 当我将以下json发布到动物园时:

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

I get the error: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "@class" (Class com.example.Zoo), not marked as ignorable 我收到错误:org.codehaus.jackson.map.exc.UnrecognizedPropertyException:无法识别的字段“ @class”(类com.example.Zoo),未标记为可忽略

What am I doing wrong? 我究竟做错了什么?

Ok, I'm an idiot: 好吧,我是个白痴:

The json should be: json应该是:

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

because the @class belongs to the type animal. 因为@class属于动物类型。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM