Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按父类字段值用Jackson反序列化子类_Java_Kotlin_Jackson - Fatal编程技术网

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中序列化