Procesamiento de JSON en Kotlin: bibliotecas y ejemplos de uso

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

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 @SerializedName para mapeo de campos.
  • - El uso de reflexión puede reducir el rendimiento.
  • - Problemas con el manejo de null y 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

Recommendations