可序列化类
为模型添加注解
可序列化类 是 CoddyKit 上的免费 Kotlin Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Kotlin Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Kotlin Academy 课程共包含 4 节课。
@Serializable 注解
要使一个类可序列化,请使用 @Serializable 标注它。然后,编译器插件会为其生成序列化器。
import kotlinx.serialization.Serializable
@Serializable
data class User(val id: Int, val name: String)适用于数据类
您可以标注任何类,但数据类是模型最常见的选择,因为它们会自动生成 equals、hashCode 和 toString。
构造函数中的所有属性都会成为序列化字段。
默认值
具有默认值的属性在解码时会变为可选属性。如果 JSON 中省略了这些属性,就会使用默认值。
@Serializable
data class Config(
val host: String,
val port: Int = 8080,
val secure: Boolean = false
)可空属性
可空类型会映射为 JSON null。没有默认值的可空属性在 JSON 中仍然是必需的(但其值可以为 null)。
@Serializable
data class Profile(
val name: String,
val bio: String? = null
)使用 @SerialName 重命名字段
JSON 字段名称通常不同于 Kotlin 的命名约定。请使用 @SerialName 对它们进行映射。
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class Account(
@SerialName("user_id") val userId: Int,
@SerialName("full_name") val fullName: String
)使用 @Transient 忽略属性
使用 @Transient 标记属性,可以将其排除在序列化之外。瞬态属性必须具有默认值。
import kotlinx.serialization.Transient
import kotlinx.serialization.Serializable
@Serializable
data class Session(
val token: String,
@Transient val cachedAt: Long = 0L
)嵌套的可序列化类
可序列化类可以包含其他可序列化类。插件会自动处理整个对象图。
@Serializable
data class Address(val city: String, val zip: String)
@Serializable
data class Company(val name: String, val address: Address)模型中的集合
当元素可序列化时,List、Set 和 Map 等标准集合无需额外配置即可序列化。
@Serializable
data class Team(
val name: String,
val members: List<String>,
val scores: Map<String, Int>
)支持枚举
枚举类可以使用 @Serializable 标注,默认会序列化为其名称。您可以在枚举项上使用 @SerialName 进行自定义。
@Serializable
enum class Role {
@SerialName("admin") ADMIN,
@SerialName("user") USER
}必需属性与可选属性总结
除非属性具有默认值,否则它在 JSON 中就是必需的。主要规则如下:
- 没有默认值 → 必需
- 有默认值 → 可选
@Transient→ 忽略,且必须有默认值- 没有默认值的可空属性 → 必需,但值可以为 null
无法直接序列化的类型
没有内置序列化器的类型(例如 java.util.Date、java.time.Instant、UUID)需要自定义序列化器,您将在后面学习相关内容。
在没有自定义序列化器的情况下尝试序列化这些类型,会导致编译错误。
快速检查
关于 @Transient,以下哪项说法正确?
回顾
您学会了如何标注模型:
- 在类上使用
@Serializable - 默认值会使字段变为可选
@SerialName会重命名 JSON 键@Transient会排除字段(需要默认值)
下一步:实际进行 JSON 编码和解码。
常见问题解答
「可序列化类」课时是免费的吗?
是的 — 「可序列化类」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Kotlin Academy 课程的其余内容,请升级到 CoddyKit PRO。 Kotlin Academy 课程共包含 4 节课。
「可序列化类」这节课中我会学到什么?
为模型添加注解 你通过在浏览器中直接运行的动手代码来练习 Kotlin Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Kotlin Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Kotlin Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「可序列化类」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Kotlin Academy 课中编写并运行代码吗?
能。每节 Kotlin Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。