반응형
Enum에 기반한 잭슨 폴리모픽 역직렬화
JacksonPolymorphicDeserialization을 사용하고 있습니다.이것은 '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 String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
완벽하게 작동하며, 제 json은 'type' 값에 따라 예상 클래스로 바뀝니다.
그러나 'type' 속성을 String에서 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 EventType type;
public EventType getType() {
return type;
}
public void setType(EventType type) {
this.type = type;
}
}
및 Enum:
public enum EventType {
SPECIAL_EVENT_1,
SPECIAL_EVENT_2,
EVENT;
}
문제는 이 두 번째 접근법이 효과가 없다는 것입니다.왜 그런지 알아?Enum을 사용할 수 있습니까?
감사합니다!
고정!
잭슨 2.0과 연동됩니다!!
다음과 같은 enum을 사용하여 동작했습니다.
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "type",
visible = true
)
언급URL : https://stackoverflow.com/questions/15945404/jackson-polymorphic-deserialization-based-on-enum
반응형
'programing' 카테고리의 다른 글
| 식에서의 Angularjs if-then-else 구조 (0) | 2023.02.22 |
|---|---|
| 반응 입력 defaultValue가 상태와 함께 업데이트되지 않음 (0) | 2023.02.22 |
| Wordpress 플러그인 PHP 파일에서 POT 파일을 자동 생성하는 방법은 무엇입니까? (0) | 2023.02.22 |
| 모멘트를 사용하여 날짜 목록에서 최소 날짜 또는 최대 날짜를 얻는 방법? (0) | 2023.02.22 |
| AJAX 콜을 처리하는 웹 워커 - 최적화 오버킬? (0) | 2023.02.22 |