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:
@Serializableen la clase- Los valores predeterminados hacen que los campos sean opcionales
@SerialNamecambia el nombre de las claves JSON@Transientexcluye 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
- Configuración de kotlinx.serialization
- Clases serializables
- Codificación y decodificación JSON
- Serializadores personalizados