Kotlin数据类如何序列化
导读:在 Kotlin 中,数据类(data class)是一种特殊的类,用于存储简单的数据结构 使用 Java 标准库中的 Serializable 接口: 首先,让你的数据类实现 Serializable 接口。然后,在类定义中添加一个...
在 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<
User>
(json)
println("Deserialized user: $user2")
}
这就是在 Kotlin 中序列化数据类的方法。你可以根据自己的需求选择合适的方法。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Kotlin数据类如何序列化
本文地址: https://pptw.com/jishu/706151.html