【发布时间】:2021-10-21 14:54:30
【问题描述】:
我想使用 kotlinx-serializer 序列化以下类。
但由于它包含具有自定义类型的 Map - HttpUrl 和 List<Cookie>,因此会出错
- 找不到类型“HttpUrl”的序列化程序
- 找不到类型“Cookie”的序列化程序
查看 kotlinx 序列化 文档时,我似乎需要为上述地图类型创建一个 custom KSerializer。所以我可以像下面这样添加它。
@Serializable(with = CookieSerializer::class)
val cookies: Map<HttpUrl, List<Cookie>> = emptyMap()
我正在研究有关如何创建自定义 CookieSerializer 的一些输入,我尝试使用以下方法,只是为了查看编译时错误是否已解决。
@Serializer(forClass = Map::class)
object CookieSerializer : KSerializer<Map<HttpUrl, List<Cookie>>> {
override val descriptor: SerialDescriptor =
PrimitiveSerialDescriptor("Cookie", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: Map<HttpUrl, List<Cookie>>) {
}
override fun deserialize(decoder: Decoder): Map<HttpUrl, List<Cookie>> {
return emptyMap()
}
}
但我仍然收到错误消息。
【问题讨论】:
标签: android kotlin kotlinx.serialization