Kotlin JSON: guía de parsing desde cero hasta experto

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

Introducción: por qué JSON en Kotlin es dolor y alegría al mismo tiempo

\n

Si alguna vez has escrito para Android o backend en Kotlin, seguramente te has encontrado con JSON. Es como el aire para el desarrollador moderno: APIs, configuraciones, bases de datos, todo habla este idioma. Pero he aquí la paradoja: la pregunta "How to parse JSON in Kotlin?" en Stack Overflow acumula miles de visitas cada mes. ¿Por qué? Porque en Kotlin, a diferencia de Java, existe null safety, y las bibliotecas antiguas como Gson empiezan a "comportarse de forma extraña".

\n

En este tutorial analizaremos el parsing JSON en Kotlin de lo simple a lo complejo. Aprenderás a trabajar con Kotlinx Serialization, Moshi y el clásico Gson. Escribiremos código real que puedes copiar directamente a tu proyecto. ¡Vamos allá!

\n\n
\n\n

¿Qué es JSON y por qué Kotlin no se lleva bien con él de inmediato?

\n

JSON (JavaScript Object Notation) es un formato de texto para el intercambio de datos. Se ve más o menos así:

\n
{\n  "name": "Kotlin",\n  "year": 2011,\n  "features": ["null safety", "coroutines"]\n}
\n

Parece sencillo, ¿qué podría salir mal? Pero en Kotlin existe un tipado estricto y null safety. Cuando parseas JSON, debes indicar explícitamente qué campos pueden ser null y cuáles son obligatorios. Si la biblioteca no lo tiene en cuenta, obtendrás un NullPointerException o errores extraños.

\n

Por eso, elegir la biblioteca correcta para el parsing JSON en Kotlin no es solo "cuestión de gustos", sino un tema de estabilidad del proyecto.

\n\n

Top 3 bibliotecas para parsing JSON en Kotlin

\n

Analizaremos tres enfoques principales. Cada uno tiene sus ventajas y desventajas.

\n
    \n
  • Kotlinx Serialization — la biblioteca oficial de JetBrains. La mejor integración con el lenguaje.
  • \n
  • Moshi — una biblioteca moderna de Square. Funciona tanto con Java como con Kotlin.
  • \n
  • Gson — el viejo y querido estándar. Sigue siendo popular, pero requiere precaución con Kotlin.
  • \n
\n\n

1. Kotlinx Serialization — la elección de los expertos

\n

Esta es la biblioteca nativa para Kotlin. Utiliza generación de código y soporta completamente null safety. Si estás escribiendo un proyecto nuevo en Kotlin, esta es tu opción.

\n

Instalación: Agrega el plugin en build.gradle.kts:

\n
plugins {\n    kotlin("plugin.serialization") version "1.9.0"\n}\n\ndependencies {\n    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")\n}
\n

Ejemplo de código:

\n
import kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\n\n@Serializable\ndata class User(\n    val name: String,\n    val year: Int,\n    val features: List<String>\n)\n\nfun main() {\n    val jsonString = """\n        {\n            "name": "Kotlin",\n            "year": 2011,\n            "features": ["null safety", "coroutines"]\n        }\n    """.trimIndent()\n\n    val user = Json.decodeFromString<User>(jsonString)\n    println(user.name) // Kotlin\n    println(user.features[0]) // null safety\n}
\n

Observa: Kotlinx Serialization detecta automáticamente los tipos. Si un campo falta en el JSON y en el data class no está marcado como nullable, obtendrás una excepción. Esto es bueno: no pasarás por alto el error.

\n\n

2. Moshi — flexible y rápido

\n

Moshi es una biblioteca de Square, creada teniendo en cuenta Kotlin. También soporta generación de código y null safety. A diferencia de Gson, Moshi no usa reflexión por defecto, lo que la hace más rápida.

\n

Instalación:

\n
dependencies {\n    implementation("com.squareup.moshi:moshi-kotlin:1.15.0")\n    ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")\n}
\n

Ejemplo de código:

\n
im                

Blogs

Book Recommendations