Ktor客户端的JsonFeature未解决。

12

我在安卓上启动Ktor客户端并想要使用任何序列化器,目前使用的是kotlinx的序列化器,但是其他序列化器也会出现同样的问题——JsonFeature未找到(在下面的片段中标记为读取)。我错过了什么?

class StreamClient {
    val client: HttpClient
    init {
        client = HttpClient(Android) {
            install(JsonFeature) {
                serializer = KotlinxSerializer()
            }
        }
    }
}

Gradle:

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")

看起来我在陈述方面错了 - 如果我使用GSON序列化程序,JsonFeature是可以找到的。 我猜我需要一个完整的多平台设置来使用kotlin x serializer。 - Andy Victors
同样的问题,但为什么呢?看起来 kotlinx 有一个 JVM 分支,但是 JsonFeature 仍然不可用... 真让人沮丧。 - RoyRao
4个回答

11

1
未解决的引用。如何导入它? - IgorGanapolsky

7

正如所说的那样,它已经被更名为ContentNegotiation

您需要添加协商依赖项:

implementation("io.ktor:ktor-server-content-negotiation:$ktor_version")

同时,JSON

implementation("io.ktor:ktor-serialization-kotlinx-json:$ktor_version")

httpClient 配置下安装它

install(ContentNegotiation) {
    json()
}

这里提供详细信息:https://ktor.io/docs/serialization.html#register_json


13
应该使用 ktor-client-content-negotiation 而不是 ktor-server-content-negotiation - Tyler V
实际上,ktor-server-content-negotiation 对我很有效。 - Tonnie
2
一定应该是ktor-client-content-negotiation。查看文档https://ktor.io/docs/eap/serialization-client.html#register_json - Andrew Lee

3
ktor 1.6.8 的客户端文档说明可以在 JVM 中使用 GSON 或 Jackson,也可以在多平台设置中使用 kotlinx.serialization

当发送请求和接收响应时,可以使用 JsonFeature 对 JSON 数据进行序列化/反序列化。在 JVM 上,可以使用 Gson/Jackson 库,在 Kotlin 多平台上,可以使用 kotlinx.serialization。

https://ktor.io/docs/json.html

我能够按照以下方式设置序列化程序:
val client = HttpClient() {
    install(JsonFeature) {
        serializer = KotlinxSerializer(kotlinx.serialization.json.Json {
            prettyPrint = true
            isLenient = true
            ignoreUnknownKeys = true
        })
    }
}

这些依赖项
implementation("io.ktor:ktor-client-core:$ktor_version")
implementation("io.ktor:ktor-client-apache:$ktor_version")
implementation("io.ktor:ktor-client-serialization:$ktor_version")

-1

所有依赖项都在Json文档中描述,该文档公开了包含JsonFeaturektor-client-json模块的API。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接