12
Ben
JacksonPolymorphicDeserialization ile çalışıyorum
dayanarak, bu 'türü' özelliğinde merkezli uygun sınıfa deserializes benim kodudur: Mükemmel çalışıyorJackson Polimorfik Deserialization 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;
}
}
ve benim json dönüşür 'tip' değerine göre beklenen sınıf.
@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;
}
}
ve Enum:
Ancak, Enum dizesi 'type' mülkü taşımak düşünüyorum, bu benim yeni bu değişiklikle kodudur
public enum EventType {
SPECIAL_EVENT_1,
SPECIAL_EVENT_2,
EVENT;
}
Sorun şu ki bu ikinci yaklaşım çalışmıyor ... neden herhangi bir fikir ??? Enum'u burada kullanabilir miyim ???
Teşekkürler!
Görünürlüğü true değerine koymazsanız bu durumda işe yaramaz. Onaylayabilir misiniz? – Maxrunner
'Görünüş'ün' çalışmak için doğru olması gerektiğini doğrulayabilirim. Benim durumumda da, serialization sırasında iki kez görünen özellikten kaçınmak için 'include = JsonTypeInfo.As.EXISTING_PROPERTY' kullanılır. –