12
내가
JacksonPolymorphicDeserialization 함께 일하고 있어요
을 기반으로, 이것은 '유형'속성에 기반을 둔 적절한 클래스로 역 직렬화 내 코드입니다 : 그것은 완벽하게 작동하고잭슨 다형성 역 직렬화 열거
@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;
}
}
내 JSON은로 변신 '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 EventType type;
public EventType getType() {
return type;
}
public void setType(EventType type) {
this.type = type;
}
}
하고 열거 :
그러나, 나는 열거하는 문자열에서 '유형'속성을 이동 고려하고,이 나의 새로운이 변화 코드
public enum EventType {
SPECIAL_EVENT_1,
SPECIAL_EVENT_2,
EVENT;
}
문제는이 두 번째 접근 방식이 작동하지 않는다는 것입니다 ... 어떤 생각입니까 ??? 여기에 Enum을 사용할 수 있습니까 ???
감사합니다.
이 경우 실제로 표시하지 않으면 작동하지 않을 것 같습니다. 확인할 수 있습니까? – Maxrunner
'visible'이 작동하려면 'true'여야한다는 것을 확인할 수 있습니다. 내 경우 직렬화 중에 속성이 두 번 나타나는 것을 피하기 위해'include = JsonTypeInfo.As.EXISTING_PROPERTY'도 사용했습니다. –