jackson注释中的多态性:@JsonTypeInfo用法
我想知道是否可以使用@JsonTypeInfo
注释接口。 我有一系列应该被序列化和反序列化的类。
这是我想要做的。 我有两个实现类Sub1
, Sub2
实现MyInt
。 某些模型类具有实现types的接口引用。 我想反序列化基于多态的对象
@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:需要包含typesID的JSONstring
@ 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'的属性中设置。