java - jsonproperty - jackson polymorphic
Deserialización polimórfica de Jackson basada en Enum (1)
¡Fijo!
¡Funciona con jackson 2.0!
Estoy trabajando con JacksonPolymorphicDeserialization , este es mi código que se deserializa en la clase adecuada basada en la propiedad ''tipo'':
@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;
}
}
Está funcionando perfectamente y mi json se convierte en la clase esperada de acuerdo con el valor ''tipo''.
Sin embargo, estoy considerando mover la propiedad ''tipo'' de String a Enum, este es mi nuevo código con este cambio:
@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;
}
}
y el Enum:
public enum EventType {
SPECIAL_EVENT_1,
SPECIAL_EVENT_2,
EVENT;
}
El problema es que este segundo enfoque no funciona ... ¿alguna idea de por qué? ¿Puedo usar Enum aquí?
¡Gracias!