java – jackson批注中的多态性:@JsonTypeInfo用法

我想知道如果@JsonTypeInfo注释可以用于接口。我有一套应该序列化和反序列化的类。

这里是我想做的。我有两个实现类Sub1,Sub2实现MyInt。一些模型类具有实现类型的接口引用。我想根据多态性反序列化对象

@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT)
@JsonSubTypes({
    @Type(name="sub1", value=Sub1.class), 
    @Type(name="sub2", value=Sub2.class)})
public interface MyInt
{
}

@JsonTypeName("sub1")
public Sub1 implements MyInt
{
}

@JsonTypeName("sub2")
public Sub2 implements MyInt
{
}

我得到以下JsonMappingException:
意外的令牌(END_OBJECT),期望FIELD_NAME:需要JSON包含类型ID的字符串

@ JsonSubTypes.Type必须有这样的值和名称,

  @JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT, property="type")
  @JsonSubTypes({

        @JsonSubTypes.Type(value=Dog.class, name="dog"),

        @JsonSubTypes.Type(value=Cat.class, name="cat")

    }) 

在子类中,使用@JsonTypeName(“dog”)来说出名称。

值’dog’和’cat’将在名为“type”的属性中设置。

http://stackoverflow.com/questions/11798394/polymorphism-in-jackson-annotations-jsontypeinfo-usage

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – jackson批注中的多态性:@JsonTypeInfo用法