Procesamiento de JSON 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

Procesamiento de JSON en Kotlin: bibliotecas, herramientas y ejemplos de código



JSON (JavaScript Object Notation) es uno de los formatos de intercambio de datos más populares en el desarrollo web moderno. Al crear aplicaciones en Kotlin, ya sea Android, backend o escritorio, casi siempre es necesario analizar y generar JSON. En este artículo, analizaremos en detalle las principales bibliotecas para trabajar con JSON en Kotlin, sus capacidades, ventajas y proporcionaremos ejemplos prácticos de código.



¿Por qué se necesita un procesamiento separado de JSON en Kotlin?



Kotlin es un lenguaje de tipado estático que funciona sobre JVM (así como Native y JS). A diferencia de los lenguajes dinámicos, donde JSON se puede convertir a un diccionario "sobre la marcha", en Kotlin se acostumbra trabajar con objetos tipados. Esto aumenta la confiabilidad del código y permite que el IDE sugiera automáticamente los campos. Para convertir JSON a objetos de Kotlin (data classes) y viceversa, se utilizan bibliotecas de serialización/deserialización.



Bibliotecas principales para JSON en Kotlin



Consideremos las tres bibliotecas más populares: kotlinx.serialization (recomendada por JetBrains), Gson (de Google) y Moshi (de Square).



1. kotlinx.serialization



Esta es la biblioteca oficial de serialización en Kotlin, compatible con JetBrains. Funciona de forma multiplataforma (JVM, Native, JS) y no utiliza reflexión, lo que proporciona un alto rendimiento y seguridad de tipos.



Instalación: agregue el plugin y la dependencia 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 uso:



import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Jsonimport kotlinx.serialization.encodeToStringimport kotlinx.serialization.decodeFromString

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

fun main() { val json = Json { prettyPrint = true; ignoreUnknownKeys = true }

// Serialización (objeto -> JSON) val user = User("Alexey", 30, "alex@example.com") val jsonString = json.encodeToString(user) println(jsonString)

// Deserialización (JSON -> objeto) val input = """{"name":"María","age":25}""" val parsedUser = json.decodeFromString<User>(input) println(parsedUser)}


Características:

  • Soporte para campos nullable (como email en el ejemplo).
  • Configuración a través de DSL: prettyPrint, ignoreUnknownKeys y otros.
  • Trabajo con enum, sealed classes, objetos anidados.
  • Multiplataforma: un mismo código para Android, iOS, web.


2. Gson



Gson es una biblioteca clásica de Google, ampliamente utilizada en el mundo Java. En Kotlin también funciona, pero requiere cuidado con los tipos nullable y las data classes.



Instalación:



dependencies {    implementation("com.google.code.gson:gson:2.10.1")}


Ejemplo:



import com.google.gson.Gsonimport com.google.gson.GsonBuilder

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

fun main() { val gson: Gson = GsonBuilder().setPrettyPrinting().create()

// Serialización val product = Product(1, "Portátil", 89999.99) val json = gson.toJson(product) println(json)

// Deserialización val jsonString = """{"id":2,"title":"Ratón","price":1500.50}""" val parsed = gson.fromJson(jsonString, Product::class.java) println(parsed)}


Importante: Gson utiliza reflexión, por lo que para las data classes de Kotlin puede ser necesario @JvmOverloads o configuración

Recommendations