Kotlin序列化详解
使用kotlinx.serialization库轻松实现对象与JSON的相互转换。 · 难度:入门 · +15XP
序列化概述
Kotlin序列化库提供声明式方式,通过注解@Serializable自动生成序列化器。
基本用法
import kotlinx.serialization.*
import kotlinx.serialization.json.*
@Serializable
data class Project(val name: String, val stars: Int)
fun main() {
val project = Project("Kotlin", 100)
val json = Json.encodeToString(project)
println(json) // {"name":"Kotlin","stars":100}
val obj = Json.decodeFromString(json)
println(obj.name) // Kotlin
}
自定义序列化
可以编写自定义序列化器处理特殊逻辑:
object CustomSerializer : KSerializer {
override val descriptor = PrimitiveSerialDescriptor("Custom", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: String) {
encoder.encodeString(value.uppercase())
}
override fun deserialize(decoder: Decoder): String {
return decoder.decodeString().lowercase()
}
} | 注解 | 作用 |
|---|---|
| @Serializable | 标记可序列化类 |
| @Transient | 忽略字段 |
| @SerialName | 自定义字段名 |
练习提示
创建一个包含列表的@Serializable数据类,序列化后打印JSON。