Procesamiento de JSON en Kotlin: bibliotecas, análisis y serialización

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

Manejo de JSON en Kotlin: guía completa



JSON (JavaScript Object Notation) sigue siendo uno de los formatos de intercambio de datos más populares en desarrollo web, aplicaciones móviles y microservicios. Kotlin, como lenguaje moderno para JVM, Android y proyectos multiplataforma, ofrece varias herramientas potentes para trabajar con JSON. En este artículo, analizaremos en detalle las principales bibliotecas, sus capacidades y las mejores prácticas.



¿Por qué necesitas una biblioteca para JSON en Kotlin?

Aunque Kotlin funciona en JVM y puede usar bibliotecas de Java, las soluciones nativas de Kotlin (por ejemplo, kotlinx.serialization) proporcionan:

  • Seguridad de tipos en tiempo de compilación
  • Soporte para data-classes y sealed-classes
  • Multiplataforma (KMP)
  • Código boilerplate mínimo


Bibliotecas principales para trabajar con JSON en Kotlin



1. kotlinx.serialization (recomendada)

Esta es la biblioteca oficial de JetBrains, integrada en el ecosistema de Kotlin. Soporta multiplataforma y no requiere reflexión.

Configuración (Gradle):

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

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


Ejemplo de análisis JSON:

import kotlinx.serialization.*import kotlinx.serialization.json.*

@Serializabledata class User( val id: Int, val name: String, val email: String, @SerialName("is_active") val isActive: Boolean = false)

fun main() { val jsonString = """ { "id": 1, "name": "Иван Петров", "email": "ivan@example.com", "is_active": true } """.trimIndent()

val user = Json.decodeFromString<User>(jsonString) println("Usuario: ${user.name}, activo: ${user.isActive}")

// Serialización de vuelta a JSON val jsonOutput = Json.encodeToString(user) println(jsonOutput)}


2. Gson (de Google)

Biblioteca Java popular que se adapta fácilmente a Kotlin. Adecuada para proyectos simples sin multiplataforma.

Ejemplo:

import com.google.gson.Gsonimport com.google.gson.annotations.SerializedName

data class Product( @SerializedName("product_id") val id: Int, val title: String, val price: Double)

fun main() { val gson = Gson() val json = """{"product_id": 101, "title": "Ноутбук", "price": 79999.99}""" val product = gson.fromJson(json, Product::class.java) println("Producto: ${product.title}, precio: ${product.price} руб.") // Serialización inversa val jsonOut = gson.toJson(product) println(jsonOut)}


3. Moshi (de Square)

Alternativa moderna a Gson con mejor rendimiento y soporte para generación de código Kotlin.

Ejemplo:

import com.squareup.moshi.Moshiimport com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactoryimport com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory

data class Book( val isbn: String, val author: String, val year: Int)

fun main() { val moshi = Moshi.Builder() .add(KotlinJsonAdapterFactory()) .build() val adapter = moshi.adapter(Book::class.java) val json = """{"isbn": "978-5-17-123456-7", "author": "Лев Толстой", "year": 1877}""" val book = adapter.fromJson(json) println("Libro: ${book?.author} - ISBN: ${book?.isbn}")}


Comparación de bibliotecas

  • kotlinx.serialization — la mejor opción para proyectos nuevos, multiplataforma y Android. Requiere un plugin del compilador.
  • Gson — fácil de usar, adecuado para prototipos rápidos

Recommendations