Kotlinでクラスのインスタンスをシリアライズする方法についてご紹介します。シリアライズとは、データをバイト列に変換し、それを保存したり転送したりするプロセスのことを指します。Kotlinでは、クラスのインスタンスをシリアライズするために、Serializable
インターフェースやKotlinの @Serializable
アノテーションを使用します。
まず、シリアライズ可能なクラスを作成します。以下は簡単な例です。
import java.io.Serializable
@Serializable
data class Person(val name: String, val age: Int)
上記のコードでは、Person
クラスが Serializable
インターフェースを実装しています。また、@Serializable
アノテーションを使用して、Kotlinx Serializationライブラリによるシリアライズを有効にしています。
次に、このクラスのインスタンスをシリアライズしてファイルに保存する方法を示します。
import kotlinx.serialization.*
import kotlinx.serialization.json.Json
fun main() {
val person = Person("Alice", 30)
// オブジェクトをJSON形式にシリアライズ
val jsonString = Json.encodeToString(person)
// JSON文字列をファイルに保存
val outputFile = File("person.json")
outputFile.writeText(jsonString)
println("Personオブジェクトをシリアライズしてファイルに保存しました。")
}
この例では、Kotlinx Serializationライブラリの Json.encodeToString
関数を使用して、Person
オブジェクトをJSON文字列にシリアライズし、その文字列をファイルに保存しています。
シリアライズされたデータをデシリアライズする場合は、以下のように行います。
fun main() {
// ファイルからJSON文字列を読み込み
val jsonString = File("person.json").readText()
// JSON文字列をデシリアライズしてオブジェクトに戻す
val person = Json.decodeFromString<Person>(jsonString)
println("ファイルからPersonオブジェクトをデシリアライズしました。")
println("名前: ${person.name}, 年齢: ${person.age}")
}
このようにして、Kotlinでクラスのインスタンスをシリアライズしてファイルに保存し、後でデシリアライズすることができます。シリアライズとデシリアライズは、データの永続化やネットワーク通信などの多くのシナリオで役立ちます。