Procesamiento de JSON en Kotlin: revisión de bibliotecas y ejemplos prácticos
JSON (JavaScript Object Notation) sigue siendo uno de los formatos más populares para el intercambio de datos entre el cliente y el servidor. En el lenguaje Kotlin, que se utiliza activamente para el desarrollo de aplicaciones Android y soluciones de servidor, existen varias bibliotecas potentes para trabajar con JSON. En este artículo, analizaremos en detalle las herramientas principales: kotlinx.serialization, Gson, Moshi y Klaxon. Aprenderá cómo analizar JSON, serializar objetos y procesar datos de manera eficiente.
1. kotlinx.serialization — enfoque nativo de JetBrains
kotlinx.serialization es la biblioteca oficial de los creadores de Kotlin. Su principal ventaja es la integración completa con el sistema de tipos del lenguaje y el soporte multiplataforma (KMM). Para trabajar, necesitará conectar el plugin en build.gradle.kts:
plugins { kotlin("plugin.serialization") version "1.9.22"}
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")}Ejemplo de serialización y deserialización de datos:
import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Json
@Serializabledata class User(val id: Int, val name: String, val email: String)
fun main() { val jsonString = """{"id":1,"name":"Ana","email":"anna@example.com"}""" // Deserialización val user = Json.decodeFromString<User>(jsonString) println("Usuario: ${user.name}, email: ${user.email}") // Serialización val output = Json.encodeToString(user) println(output)}Características:
- No requiere reflexión (funciona en tiempo de compilación).
- Admite serializadores personalizados y polimorfismo.
- Ideal para Kotlin Multiplatform Mobile.
2. Gson — clásico de Google
La biblioteca Gson es conocida por su simplicidad y amplia difusión. Utiliza reflexión, por lo que es adecuada para proyectos donde la velocidad de configuración es importante. Conexión:
dependencies { implementation("com.google.code.gson:gson:2.10.1")}Ejemplo de trabajo:
import com.google.gson.Gson
data class Product(val id: Int, val title: String, val price: Double)
fun main() { val gson = Gson() val json = """{"id":101,"title":"Portátil","price":79990.0}""" // Análisis val product = gson.fromJson(json, Product::class.java) println("Producto: ${product.title}, precio: ${product.price}") // Conversión inversa val newJson = gson.toJson(product) println(newJson)}Ventajas y desventajas:
- + Mínimo código para escenarios básicos.
- + Soporte de anotaciones
@SerializedNamepara mapeo de campos. - - El uso de reflexión puede reducir el rendimiento.
- - Problemas con el manejo de
nully tipos genéricos.
3. Moshi — alternativa moderna de Square
Moshi fue creada como un reemplazo más seguro y rápido de Gson. También utiliza reflexión, pero proporciona generación de código a través de la anotación @JsonClass. Conexión:
dependencies { implementation("com.squareup.moshi:moshi-kotlin:1.15.0") ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")}Ejemplo de uso con generación de código:
import com.squareup.moshi.JsonClassimport com.squareup.moshi.Moshi
@JsonClass(generateAdapter = true)data class Book(val isbn: String, val author: String, val year: Int)
fun main() { val moshi = Moshi.Builder().build() val adapter = moshi.adapter(Book::class.java) val json = """{"isbn":"978-5-17-123456-7","autho También en la biblioteca
Envío de correo electrónico en JavaScript (Node.js): Nodemailer, SendGrid, Mailgun
Trabajo con Apache Kafka en C++: librería librdkafka y ejemplos prácticos
Generación Swagger/OpenAPI para PHP: mejores herramientas y bibliotecas
Biblioteca GraphQL JavaScript (Node.js) — Guía completa