Serializableクラス
モデルにアノテーションを付けます
「Serializableクラス」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応の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
)Nullableプロパティ
Nullable型はJSONの null に対応します。デフォルト値のないNullableプロパティは、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 を付けると、シリアライゼーションの対象外になります。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>
)Enumをサポートする
Enumクラスには @Serializable を付けられ、デフォルトでは名前にシリアライズされます。エントリの名前を変更するには、各エントリに @SerialName を使用します。
@Serializable
enum class Role {
@SerialName("admin") ADMIN,
@SerialName("user") USER
}必須と省略可能のまとめ
プロパティは、デフォルト値がない限りJSONで必須です。主なルールは次のとおりです:
- デフォルト値なし → 必須
- デフォルト値あり → 省略可能
@Transient→ 無視される。デフォルト値が必要- デフォルト値のないNullable → 必須だがnullにできる
直接シリアライズできないもの
組み込みシリアライザーのない型(例:java.util.Date、java.time.Instant、UUID)には、後で学ぶカスタムシリアライザーが必要です。
カスタムシリアライザーなしでこれらをシリアライズしようとすると、コンパイルエラーになります。
理解度チェック
@Transient について正しい説明はどれですか?
まとめ
モデルにアノテーションを付ける方法を学びました:
- クラスに
@Serializableを付ける - デフォルト値によってフィールドが省略可能になる
@SerialNameでJSONキーの名前を変更する@Transientでフィールドを除外する(デフォルト値が必要)
次は、JSONを実際にエンコードおよびデコードします。
よくある質問
「Serializableクラス」レッスンは無料ですか?
はい。「Serializableクラス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「Serializableクラス」で何を学びますか?
モデルにアノテーションを付けます ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「Serializableクラス」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- kotlinx.serializationのセットアップ
- Serializableクラス
- JSONのエンコードとデコード
- カスタムシリアライザー