Android Studio 看不到 Ktor 序列化器(找不到“用户”类的序列化器。)

时间:2021-05-08 09:45:15

标签: android android-studio kotlin serialization ktor

我正在尝试在我的项目中使用 Ktor。我按照文档中的说明做了所有事情,但它不起作用

依赖:

implementation "io.ktor:ktor-client-core:1.5.4"
implementation "io.ktor:ktor-client-android:1.5.4"
implementation "io.ktor:ktor-client-serialization-jvm:1.5.4"

HTTPClient 和请求:

val client = HttpClient {
    install(JsonFeature){
        serializer = KotlinxSerializer()
    }
    defaultRequest {
        url {
            protocol = URLProtocol.HTTPS
            host = "testtesttest.zapto.org"
        }
    }
}

suspend fun getUsersList() = client.get<User>{
    url("/users/list")
}

用户类别:

import com.kepler88d.icthack2app.model.enumerations.UserSpecialization
import kotlinx.serialization.Serializable

@Serializable
data class User(
    val id: Int,
    val password: String,
    val rating: Float,
    val specialization: UserSpecialization,
    val firstName: String,
    val lastName: String,
    val profileDescription: String,
    val githubProfileLink: String,
    val projectIdList: MutableList<Int>,
    val replyIdList: MutableList<Int>,
    val tgId: String,
)

UserSpecialization 类:

import kotlinx.serialization.Serializable

@Serializable
enum class UserSpecialization {
    IOS_DEVELOPER, ANDROID_DEVELOPER, WEB_BACKEND_DEVELOPER, WEB_FRONTEND_DEVELOPER
}

当我尝试将 JSON 反序列化为对象时,它会因以下错误而崩溃:

kotlinx.serialization.SerializationException: Serializer for class 'User' is not found.
Mark the class as @Serializable or provide the serializer explicitly.

奇怪的是,枚举类 Android studio 认为是可序列化的,而数据类却没有

enum class data class

1 个答案:

答案 0 :(得分:0)

解决方案是添加插件

id 'kotlinx-serialization'
相关问题