¿Qué es kotlinx.serialization?
Kotlinx.serialization es la biblioteca oficial de Kotlin para la serialización y deserialización de datos, incluyendo el formato JSON. Proporciona una forma potente y type-safe de convertir objetos Kotlin a JSON y viceversa, sin usar reflexión y con soporte multiplataforma (JVM, JS, Native).
¿Por qué es necesario el procesamiento JSON en Kotlin?
En el desarrollo moderno con Kotlin (Android, aplicaciones de servidor con Ktor, proyectos multiplataforma), trabajar con JSON es una tarea obligatoria: intercambio de datos con REST API, archivos de configuración, almacenamiento de datos. Kotlinx.serialization lo resuelve de manera eficiente, segura y con un código boilerplate mínimo.
Instalación
Para usar la biblioteca, agregue el plugin en build.gradle.kts:
plugins { kotlin("plugin.serialization") version "1.9.22"}
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")}Para Maven, agregue la dependencia y el plugin kotlin-maven-plugin con la configuración de serialization.
Funciones principales
- @Serializable — anotación para clases que necesitan ser serializadas.
- Json.encodeToString() — conversión de un objeto a una cadena JSON.
- Json.decodeFromString() — análisis de una cadena JSON a un objeto.
- JsonObject / JsonElement — trabajo dinámico con JSON sin crear DTO.
- @Transient, @Required, @SerialName — ajuste fino de campos.
- JsonConfiguration — configuraciones de formato (prettyPrint, ignoreUnknownKeys).
Ejemplo de código en Kotlin
import kotlinx.serialization.*import kotlinx.serialization.json.*
@Serializabledata class User(val name: String, val age: Int)
fun main() { val user = User("Алиса", 30) // Serialización val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"Алиса","age":30} // Deserialización val decodedUser = Json.decodeFromString<User>(jsonString) println(decodedUser) // User(name=Алиса, age=30) // Trabajo con JSON dinámico val jsonObject = Json.parseToJsonElement("""{"city":"Москва","zip":101000}""").jsonObject println(jsonObject["city"]) // "Москва"}Cuándo usarla
La biblioteca es ideal para:
- Aplicaciones Android (Retrofit + kotlinx.serialization).
- Proyectos de servidor con Ktor.
- Aplicaciones multiplataforma (KMP).
- Cualquier proyecto que necesite un trabajo rápido y seguro con JSON sin reflexión.
Supera a Gson y Jackson en rendimiento y seguridad de tipos, especialmente en proyectos Kotlin.
También en la biblioteca
Resilience4j para Java: guía completa con ejemplos
Qt para C++: guía completa con ejemplos
Caching en C# (.NET): Redis, MemoryCache y otras soluciones
JMH en Java: guía completa con ejemplos prácticos
Rate Limiting en Java: bibliotecas y herramientas para el control de solicitudes (Bucket4j, Resilience4j)