基于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!