Cur*_*rro 23 java polymorphism json 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;
}
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好,我的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;
}
}
Run Code Online (Sandbox Code Playgroud)
和Enum:
public enum EventType {
SPECIAL_EVENT_1,
SPECIAL_EVENT_2,
EVENT;
}
Run Code Online (Sandbox Code Playgroud)
问题是第二种方法不起作用......任何想法为什么??? 我可以在这里使用Enum吗?
谢谢!
Cur*_*rro 18
固定!
它适用于杰克逊2.0 !!
它对我来说使用枚举具有以下功能:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "type",
visible = true
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9126 次 |
| 最近记录: |