- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习如何使用 Ktor 的 HttpClient。而且,我希望它能自动将 JSON 响应转换为数据类。我想我的所有设置都是正确的(粘贴在下面),但不幸的是,java.time.Instant
使用了 import java.io.Serializable;
,我想这不是与 kotlinx 的 @kotlinx.serialization.Serializable
兼容。
那么,我怎样才能让 Ktor 将 Instant
识别为可序列化的呢?
val httpClient = HttpClient(CIO) {
install(JsonFeature) {
serializer = KotlinxSerializer(Json {
prettyPrint = true
isLenient = true
})
}
}
val response: MyResponse = httpClient.get(baseUrl() + "/example/path") {
contentType(ContentType.Application.Json)
}
@kotlinx.serialization.Serializable
data class MyResponse(
val name: String,
val time: Instant // ERROR: "Serializer has not been found for type 'Instant'. To use context serializer as fallback, explicitly annotate type or property with @Contextual"
)
旁注:使用 Gson 或 Jackson 或其他序列化器的其他答案也可能有用,因为它们可能不必显式添加 @Serializable
最佳答案
一种解决方案是使用 kotlinx-datetime 库 ( https://github.com/Kotlin/kotlinx-datetime ),它为您提供了带有 @kotlinx.serialization.Serializable
的 Instant 的 Kotlin 版本您正在寻找的。
所以,不用 java.time.Instant
, 你可以使用 kotlinx.datetime.Instant
在 MyResponse 中。
Note that the library is experimental, and the API is subject to change.(Source: https://github.com/Kotlin/kotlinx-datetime#using-in-your-projects)
关于json - 如何将 @kotlinx.serialization.Serializable 与 java.time.Instant 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71629874/
我是一名优秀的程序员,十分优秀!