Kotlin Jackson:基于两个字段反序列化子类型

Kotlin Jackson:基于两个字段反序列化子类型,kotlin,jackson,Kotlin,Jackson,我正在尝试创建一个反序列化程序,根据字段type和Event反序列化事件,有没有简单的方法 enum class Type { ACCOUNT, NOTIFICATION } enum class EventType { CREATE, CREATED } @JsonTypeInfo(???) @JsonSubTypes( JsonSubTypes.Type(value = CreateAccountEvent::class, name = "

我正在尝试创建一个反序列化程序,根据字段
type
Event
反序列化
事件
,有没有简单的方法

enum class Type {
    ACCOUNT,
    NOTIFICATION
}

enum class EventType {
    CREATE,
    CREATED
}

@JsonTypeInfo(???)
@JsonSubTypes(
    JsonSubTypes.Type(value = CreateAccountEvent::class, name = "???"),
    JsonSubTypes.Type(value = CreatedAccountEvent::class, name = "???")
    JsonSubTypes.Type(value = CreateNotificationEvent::class, name = "???")
    JsonSubTypes.Type(value = CreatedNotificationEvent::class, name = "???")
)
abstract class Event @JsonCreator constructor(
    @JsonProperty("type") val type: Type,
    @JsonProperty("event") val event: EventType
)

class CreateAccountEvent @JsonCreator constructor(
    val fieldOne: String,
    val fieldTwo: String
) : Event(Type.ACCOUNT, EventType.CREATE)

class CreatedAccountEvent @JsonCreator constructor(
    val id: UUID
): Event(Type.ACCOUNT, EventType.CREATED)

class CreateNotificationEvent @JsonCreator constructor(
    val accountId: UUID,
    val message: String
): Event(Type.NOTIFICATION, EventType.CREATE)

class CreatedNotificationEvent @JsonCreator constructor(
    val notificationId: UUID,
): Event(Type.NOTIFICATION, EventType.CREATED)