Android Studio 看不到 Ktor 序列化器(未找到 class 'User' 的序列化器。)
Ktor Serializer isn't seen by Android Studio (Serializer for class 'User' is not found.)
我正在尝试在我的项目中使用 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"
HTTP客户端和请求:
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")
}
用户class:
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,
)
用户专业化class:
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.
奇怪的是枚举 class Android studio 认为是可序列化的,但数据 class 不是
enum class
data class
解决方案是添加插件
id 'kotlinx-serialization'
我为 Android 做了这个,但它也可能适用于 ktor。首先,将此行添加到构建项目 gradle:
中的 dependencies
classpath "org.jetbrains.kotlin:kotlin-serialization:1.5.21"
还将这些添加到构建应用程序 gradle:
plugins {
...
id 'kotlinx-serialization'
}
dependencies {
...
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.2'
}
请注意版本号可能不同。
我正在尝试在我的项目中使用 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"
HTTP客户端和请求:
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")
}
用户class:
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,
)
用户专业化class:
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.
奇怪的是枚举 class Android studio 认为是可序列化的,但数据 class 不是
enum class data class
解决方案是添加插件
id 'kotlinx-serialization'
我为 Android 做了这个,但它也可能适用于 ktor。首先,将此行添加到构建项目 gradle:
中的 dependenciesclasspath "org.jetbrains.kotlin:kotlin-serialization:1.5.21"
还将这些添加到构建应用程序 gradle:
plugins {
...
id 'kotlinx-serialization'
}
dependencies {
...
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.2'
}
请注意版本号可能不同。