Java 按父类字段值用Jackson反序列化子类
我有一个父类:Java 按父类字段值用Jackson反序列化子类,java,kotlin,jackson,Java,Kotlin,Jackson,我有一个父类: open class NetworkMessage(var type: NetworkMessageType) @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type" ) @JsonSubTypes({ @JsonSubTypes.Type(value = ConnectionAcce
open class NetworkMessage(var type: NetworkMessageType)
@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")
})
它有很多子类,比如
class ConnectionAcceptedResponseMessage(
val accepted: Boolean,
val uid: String
) : NetworkMessage(NetworkMessageType.CONNECTION_ACCEPTED)
因此,每个消息类型都由父类字段值明确确定。有没有办法只使用注释而不使用treeNode来反序列化具体的子类 在Java中,您可以在父类上执行以下操作:
open class NetworkMessage(var type: NetworkMessageType)
@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")
})
我想在Kotlin中也会类似。网络消息知道所有子类吗?你说的“知道”是什么意思?这个json对象是从C#client发送的,所以我在客户端和服务器上创建了对象,它们在同一个json中序列化