0Pricing
Kotlin Academy · Lección

Clases serializables

Anote los modelos

Clases serializables es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.

La anotación @Serializable

Para hacer que una clase sea serializable, anótela con @Serializable. A continuación, el plugin del compilador genera un serializador para ella.

import kotlinx.serialization.Serializable

@Serializable
data class User(val id: Int, val name: String)

Funciona con clases de datos

Puede anotar cualquier clase, pero las clases de datos son la opción más habitual para los modelos porque generan automáticamente equals, hashCode y toString.

Todas las propiedades del constructor se convierten en campos serializados.

Valores predeterminados

Las propiedades con valores predeterminados se vuelven opcionales durante la decodificación. Si el JSON no las incluye, se utiliza el valor predeterminado.

@Serializable
data class Config(
    val host: String,
    val port: Int = 8080,
    val secure: Boolean = false
)

Propiedades anulables

Los tipos anulables se convierten en null en JSON. Una propiedad anulable sin valor predeterminado sigue siendo obligatoria en JSON, aunque su valor puede ser null.

@Serializable
data class Profile(
    val name: String,
    val bio: String? = null
)

Cambiar nombres de campos con @SerialName

Los nombres de los campos JSON suelen diferir de las convenciones de nomenclatura de Kotlin. Use @SerialName para establecer la correspondencia.

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class Account(
    @SerialName("user_id") val userId: Int,
    @SerialName("full_name") val fullName: String
)

Ignorar propiedades con @Transient

Marque una propiedad con @Transient para excluirla de la serialización. Las propiedades transitorias deben tener un valor predeterminado.

import kotlinx.serialization.Transient
import kotlinx.serialization.Serializable

@Serializable
data class Session(
    val token: String,
    @Transient val cachedAt: Long = 0L
)

Clases serializables anidadas

Las clases serializables pueden contener otras clases serializables. El plugin gestiona automáticamente todo el grafo.

@Serializable
data class Address(val city: String, val zip: String)

@Serializable
data class Company(val name: String, val address: Address)

Colecciones en los modelos

Las colecciones estándar como List, Set y Map son serializables de forma integrada cuando sus elementos son serializables.

@Serializable
data class Team(
    val name: String,
    val members: List<String>,
    val scores: Map<String, Int>
)

Las enumeraciones son compatibles

Las clases de enumeración pueden anotarse con @Serializable y, de forma predeterminada, se serializan con su nombre. Use @SerialName en sus entradas para personalizarlas.

@Serializable
enum class Role {
    @SerialName("admin") ADMIN,
    @SerialName("user") USER
}

Resumen de campos obligatorios y opcionales

Una propiedad es obligatoria en JSON salvo que tenga un valor predeterminado. Reglas principales:

  • Sin valor predeterminado → obligatoria
  • Con valor predeterminado → opcional
  • @Transient → ignorada, debe tener un valor predeterminado
  • Anulable sin valor predeterminado → obligatoria, pero puede ser null

Qué no se puede serializar directamente

Los tipos que no tienen un serializador integrado, como java.util.Date, java.time.Instant y UUID, necesitan un serializador personalizado, que aprenderá más adelante.

Intentar serializarlos sin uno provoca un error de compilación.

Comprobación rápida

¿Qué afirmación sobre @Transient es correcta?

Resumen

Ha aprendido a anotar modelos:

  • @Serializable en la clase
  • Los valores predeterminados hacen que los campos sean opcionales
  • @SerialName cambia el nombre de las claves JSON
  • @Transient excluye un campo (necesita un valor predeterminado)

A continuación: codificar y decodificar JSON.

Preguntas frecuentes

¿La lección «Clases serializables» es gratis?

Sí — el texto completo de «Clases serializables» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Clases serializables»?

Anote los modelos Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Kotlin Academy?

No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Clases serializables»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?

Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Configuración de kotlinx.serialization
  2. Clases serializables
  3. Codificación y decodificación JSON
  4. Serializadores personalizados
← Volver a Kotlin Academy