Serialización de objetos en Kotlin: bibliotecas y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Serialización de objetos en Kotlin: guía completa sobre bibliotecas y herramientas



La serialización es el proceso de convertir un objeto en un formato que se puede guardar (por ejemplo, en un archivo) o transmitir a través de una red (a través de API REST, mensajes de Kafka, etc.). El proceso inverso — la deserialización — restaura el objeto a partir de ese formato. En el ecosistema de Kotlin existen varias bibliotecas potentes para la serialización, cada una con sus propias características. En este artículo analizaremos cuatro enfoques principales: kotlinx.serialization, Gson, Moshi y Jackson.



1. kotlinx.serialization — la opción nativa para Kotlin



Desarrollada por JetBrains, la biblioteca kotlinx.serialization es el "estándar de oro" para proyectos Kotlin. Admite multiplataforma (JVM, JS, Native) y utiliza anotaciones para generar código en tiempo de compilación.



Configuración (Gradle)

plugins {    kotlin("jvm") version "1.9.0"    kotlin("plugin.serialization") version "1.9.0"}

dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")}


Ejemplo de uso

import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Json

@Serializabledata class User(val name: String, val age: Int, val email: String? = null)

fun main() { val user = User("Iván", 30, "ivan@example.com")

// Serialización a JSON val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"Iván","age":30,"email":"ivan@example.com"}

// Deserialización desde JSON val decoded = Json.decodeFromString<User>(jsonString) println(decoded) // User(name=Iván, age=30, email=ivan@example.com)}


Características

  • Null safety: soporte para campos nullable mediante ?
  • Polimorfismo: serialización de sealed class y jerarquías
  • Formatos personalizados: JSON, CBOR, Protobuf, Properties
  • Rendimiento: generación de código sin reflexión


2. Gson — el clásico de Google



Gson es una de las bibliotecas más antiguas para Java/Kotlin. Es simple de usar, pero utiliza reflexión, lo que puede reducir el rendimiento en grandes volúmenes de datos.



Configuración

implementation("com.google.code.gson:gson:2.10.1")


Ejemplo

import com.google.gson.Gson

data class Product(val id: Int, val title: String, val price: Double)

fun main() { val gson = Gson() val product = Product(1, "Portátil", 79999.99)

// Serialización val json = gson.toJson(product) println(json) // {"id":1,"title":"Portátil","price":79999.99}

// Deserialización val restored = gson.fromJson(json, Product::class.java) println(restored) // Product(id=1, title=Portátil, price=79999.99)}


Características

  • Simplicidad: mínima configuración
  • Flexibilidad: TypeAdapter personalizados para tipos complejos
  • Desventajas: reflexión, sin soporte nativo para Kotlin data class (requiere plugin o @JvmField)


3. Moshi — la alternativa moderna a Gson



Moshi de Square es una biblioteca ligera con soporte nativo para Kotlin. Utiliza generación de código mediante anotaciones, lo que la hace más rápida que Gson.



Configuración

implementation("com.squareup.moshi:moshi-kotlin:1.15.0")kapt("com.squareup.moshi:moshi-kotlin-codegen:1.15.0") // para generación de código


Ejemplo

import com.squareup.moshi.Moshiimport com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

@JsonClass(generateAdapter = true)data class Book(val isbn: String, val title: String, val authors:

Recommendations