【发布时间】:2019-03-28 23:47:40
【问题描述】:
我们如何使用 kotlin.serialize 和 Ktor 的 HttpClient 来反序列化/序列化 JSON 并以列表为根?我正在按如下方式创建 HttpClient:
HttpClient {
install(JsonFeature) {
serializer = KotlinxSerializer().apply {
setMapper(MyClass::class, MyClass.serializer())
setMapper(AnotherClass::class, AnotherClass.serializer())
}
}
install(ExpectSuccess)
}
看来我需要为 List 设置映射器,但是这对于泛型是不可能的。我看到我可以使用 MyClass.serializer().list 为它获取序列化程序,但是将其注册为对 http 请求进行反序列化/序列化并不简单。有人知道一个好的解决方案吗?
【问题讨论】:
-
看到有一个
KotlinxSerializer.registerList()....试过了,但仍然得到“找不到类 kotlin.collections.List 的无参数序列化程序。对于泛型类,例如列表,请明确提供序列化程序。”错误 -
以下还有一些可能相关的讨论(虽然还没有弄清楚如何在使用
HttpClient- github.com/Kotlin/kotlinx.serialization/issues/179时应用它
标签: json serialization kotlin ktor kotlin-multiplatform