在 Kotlin 中,数据类(data class)是一种特殊的类,用于存储简单的数据结构
- 使用 Java 标准库中的
Serializable
接口:
首先,让你的数据类实现 Serializable
接口。然后,在类定义中添加一个 init
块,用于生成 serialVersionUID
。serialVersionUID
是一个用于识别类版本的唯一标识符,它在反序列化过程中起到关键作用。
import java.io.Serializable data class User(val name: String, val age: Int) : Serializable { init { serialVersionUID = 1L } }
现在,你可以使用 Java 标准库中的 ObjectOutputStream
和 ObjectInputStream
对 User
数据类进行序列化和反序列化。
import java.io.* fun main() { val user = User("Alice", 30) // 序列化 val fileOut = FileOutputStream("user.ser") val out = ObjectOutputStream(fileOut) out.writeObject(user) out.close() fileOut.close() // 反序列化 val fileIn = FileInputStream("user.ser") val inStream = ObjectInputStream(fileIn) val user2 = inStream.readObject() as User inStream.close() fileIn.close() println("Deserialized user: $user2") }
- 使用 Kotlin 序列化库(kotlinx.serialization):
首先,你需要在项目的 build.gradle.kts
文件中添加 kotlinx.serialization 插件和库的依赖。
plugins { kotlin("jvm") version "1.5.31" kotlin("plugin.serialization") version "1.5.31" } dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0") }
接下来,为你的数据类添加 @Serializable
注解。这将自动生成一个用于序列化和反序列化的 KClass
实例。
import kotlinx.serialization.Serializable @Serializable data class User(val name: String, val age: Int)
现在,你可以使用 Kotlin 序列化库提供的 Json
类对 User
数据类进行序列化和反序列化。
import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json fun main() { val user = User("Alice", 30) // 序列化 val json = Json.encodeToString(user) println("Serialized user: $json") // 反序列化 val user2 = Json.decodeFromString(json) println("Deserialized user: $user2") }
这就是在 Kotlin 中序列化数据类的方法。你可以根据自己的需求选择合适的方法。