Ktor 客户端的 JsonFeature 未解决

And*_*ors 13 android json kotlin ktor

我正在 android 中启动基于 Ktor 的客户端,我想使用任何序列化器,目前是来自 kotlinx 的序列化器,但结果与其他序列化器相同 - 未找到 JsonFeature(在下面的代码片段中突出显示)。我缺少什么?

class StreamClient {
    val client: HttpClient
    init {
        client = HttpClient(Android) {
            install(JsonFeature) {
                serializer = KotlinxSerializer()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

摇篮:

implementation("io.ktor:ktor-client-core:$ktor_version")
implementation("io.ktor:ktor-client-android:$ktor_version")
implementation("io.ktor:ktor-client-serialization:$ktor_version")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.0")
Run Code Online (Sandbox Code Playgroud)

Ern*_*zyk 13

这与您的问题完全无关,但由于 Ktor 2.0JsonFeature已被弃用,有利于ContentNegotation

install(ContentNegotiation) {
    json()
}
Run Code Online (Sandbox Code Playgroud)

https://ktor.io/docs/eap/serialization-client.html#install_plugin


A.N*_*R.I 7

正如所说,它已更名为有利于ContentNegotiation

您必须添加协商依赖项:

implementation("io.ktor:ktor-server-content-negotiation:$ktor_version")
Run Code Online (Sandbox Code Playgroud)

另外,JSON

implementation("io.ktor:ktor-serialization-kotlinx-json:$ktor_version")
Run Code Online (Sandbox Code Playgroud)

httpClient并在setup下安装

install(ContentNegotiation) {
    json()
}
Run Code Online (Sandbox Code Playgroud)

详细信息可在此处获取:https ://ktor.io/docs/serialization.html#register_json

  • 应该是“ktor-client-content-negotiation”而不是“ktor-server-content-negotiation” (14认同)
  • 它绝对应该是 ktor-client-content-negotiation 查看文档 https://ktor.io/docs/eap/serialization-client.html#register_json (2认同)

Ale*_*man -1

Json 文档中描述的所有依赖项都会公开ktor-client-json包含JsonFeature.