Jai*_*ela 6 json kotlin ktor kotlin-multiplatform
我正在尝试在多平台项目中使用 Ktor 进行 Get 调用。这是代码:
private val client = HttpClient()
fun myCall(callback: (List<Film>) -> Unit) {
viewModelScope.launch {
val result:List<Film> = client.get {
url("https://data.sfgov.org/resource/wwmu-gmzc.json")
}
callback(result)
}
}
Run Code Online (Sandbox Code Playgroud)
每次我发出此请求时,应用程序都会关闭,并且我没有收到任何消息来告诉我发生了什么。如果不是将列表 Film 作为结果类型,而是将 String 放在其中,那么它会起作用,并且我会收到一个电影列表,但我想将其解析为我自己的对象,但我无法做到。
是不是通话有问题?
为了将Ktor http 客户端反序列化为您的自定义对象,您需要JsonFeature在创建 http 客户端时进行安装,这需要io.ktor:ktor-client-json添加依赖项。
val client = HttpClient {
install(JsonFeature)
}
Run Code Online (Sandbox Code Playgroud)
然后,根据您要使用的序列化器(Ktor 支持Gson、Jackson和Kotlinx.Serialization),您需要添加相应序列化器的依赖项。例如,如果您想使用Gson,则需要添加 的依赖项io.ktor:ktor-client-gson。然后您的 API 响应将被反序列化为您的List<Film>对象。
val result: List<Film> = client.get {
url("https://data.sfgov.org/resource/wwmu-gmzc.json")
}
Run Code Online (Sandbox Code Playgroud)
有关上述内容的更多信息,请参阅 Ktor文档
| 归档时间: |
|
| 查看次数: |
9994 次 |
| 最近记录: |