2013-04-11 13 views
12

pracuję z JacksonPolymorphicDeserialization, to jest mój kod, który deserializes do odpowiedniej klasy opartej na „typ” własności:Jackson polimorficzne Deserializacji podstawie 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 String type; 

    public String getType() { 
    return type; 
    } 

    public void setType(String type) { 
    this.type = type; 
    } 
} 

To działa doskonale i moja json przemieniło się w oczekiwana klasa zgodnie z wartością "typu".

Jednak Zastanawiam przenieść 'typem' własność z String do Enum, to jest mój nowy kod z tą zmianą:

@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; 
    } 
} 

i ENUM:

public enum EventType { 
    SPECIAL_EVENT_1, 
    SPECIAL_EVENT_2, 
    EVENT; 
} 

Problem polega na tym, że to drugie podejście nie działa ... jakikolwiek pomysł, dlaczego? czy mogę użyć Enum tutaj?

Dzięki!

Odpowiedz

13

Naprawiono!

Działa z jacksonem 2.0 !!

+1

Wygląda na to, że jeśli nie poprawisz widoczności w tym przypadku, nie zadziała .... czy możesz potwierdzić? – Maxrunner

+0

Mogę potwierdzić, że 'widzialny' musi być" prawdziwy ", aby działał. W moim przypadku użyłem również 'include = JsonTypeInfo.As.EXISTING_PROPERTY', aby uniknąć pojawiania się właściwości podczas serializacji. –

Powiązane problemy