基于Enum的Jackson多态反序列化

我正在使用JacksonPolymorphicDeserialization ,这是我的代码,它反序列化为基于’type’属性的正确类:

@JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", defaultImpl = Event.class, visible = true) @JsonSubTypes({ @Type(value = SpecialEvent1.class, name = "SPECIAL_EVENT_1"), @Type(value = SpecialEvent2.class, name = "SPECIAL_EVENT_2"), }) public abstract class AbstractEvent { private String type; public String getType() { return type; } public void setType(String type) { this.type = type; } } 

它工作得很好,我的json根据’type’值变成了预期的类。

但是,我正在考虑将’type’属性从String移动到Enum,这是我的新代码:

 @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", defaultImpl = Event.class, visible = true) @JsonSubTypes({ @Type(value = SpecialEvent1.class, name = "SPECIAL_EVENT_1"), @Type(value = SpecialEvent2.class, name = "SPECIAL_EVENT_2"), }) public abstract class AbstractEvent { private EventType type; public EventType getType() { return type; } public void setType(EventType type) { this.type = type; } } 

和Enum:

 public enum EventType { SPECIAL_EVENT_1, SPECIAL_EVENT_2, EVENT; } 

问题是第二种方法不起作用……任何想法为什么??? 我可以在这里使用Enum吗?

谢谢!

固定!

它适用于jackson2.0!