polymorphic jsonproperty defaulttyping java json polymorphism jackson

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!