【发布时间】:2021-05-24 12:05:36
【问题描述】:
我尝试通过标准的 kotlinx 序列化库序列化 KClass 引用,但它似乎完全不适用于反射的东西。
@Serializable
data class SocketDto(val eventType: KClass<out Event>)
interface Event
@Serializable
data class EnableEvent(val enable: Boolean) : SocketEvent
运行后
println(Json.encodeToString(SocketDto(EnableEvent::class)))
得到
kotlinx.serialization.SerializationException: Class 'ClassReference' is not registered for polymorphic serialization in the scope of 'KClass'
【问题讨论】:
-
为什么首先需要序列化
KClass?连载是一件很奇怪的事情。 -
@Sweeper 我需要在 SocketDto 中获取事件类型。任何。这个问题要广泛得多
-
KClass是一个接口,ClassReference是内部 stdlib API 的一部分,所以这个问题与stackoverflow.com/questions/66355506/… 非常相似
标签: json kotlin serialization