Fairy :
I have a parent class:
open class NetworkMessage(var type: NetworkMessageType)
and a bunch of it's subclasses, like
class ConnectionAcceptedResponseMessage(
val accepted: Boolean,
val uid: String
) : NetworkMessage(NetworkMessageType.CONNECTION_ACCEPTED)
so every message type is clearly determined by parent class field value. Is there any way to deserialize concrete subclass using only annotations and without using treeNode?
Puce :
In Java, you can do something like this on the parent class:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "type"
)
@JsonSubTypes({
@JsonSubTypes.Type(value = ConnectionAcceptedResponseMessage.class, name = "CONNECTION_ACCEPTED"),
@JsonSubTypes.Type(value = OtherResponseMessage.class, name = "OTHER")
})
I guess in Kotlin this will be similar.
Guess you like
Origin http://10.200.1.11:23101/article/api/json?id=420835&siteId=1