Trabajo con JSON en Kotlin: análisis y serialización para principiantes

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

Trabajo con JSON en Kotlin: análisis y serialización para principiantes



JSON (JavaScript Object Notation) es el formato de intercambio de datos más popular en las aplicaciones web y API modernas. Si ha comenzado a estudiar Kotlin, tarde o temprano se encontrará con la necesidad de convertir cadenas JSON en objetos de su aplicación (deserialización o análisis) y viceversa (serialización).



En este artículo, analizaremos las principales formas de trabajar con JSON en Kotlin utilizando tres librerías populares: kotlinx.serialization, Gson y Moshi. Aprenderá cómo comenzar rápidamente a analizar JSON y serializar datos sin complicaciones innecesarias.



¿Qué es el análisis y la serialización de JSON?



Antes de pasar al código, definamos los términos:



  • Serialización — es el proceso de convertir un objeto (por ejemplo, una clase de datos de Kotlin) en una cadena en formato JSON.
  • Análisis (deserialización) — es el proceso inverso: a partir de una cadena JSON obtenemos un objeto de un tipo específico.


La interacción con JSON en Kotlin se puede organizar de varias maneras. No hay soporte integrado para JSON en el lenguaje, por lo que utilizamos librerías de terceros.



Librería kotlinx.serialization (método recomendado)



kotlinx.serialization es la librería oficial de JetBrains que se integra perfectamente con el lenguaje Kotlin. Admite multiplataforma (JVM, JS, Native) y funciona en la etapa de compilación, lo que la hace muy rápida y segura.



Instalación



Agregue el plugin al archivo build.gradle.kts:



plugins {    kotlin("plugin.serialization") version "1.9.0"}

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


Ejemplo: análisis de JSON



Supongamos que tenemos un JSON con datos de un usuario:



{  "name": "Iván",  "age": 28,  "email": "ivan@example.com"}


Creemos un data class y marquémoslo con la anotación @Serializable:



import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Json

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

fun main() { val jsonString = """ {"name": "Iván", "age": 28, "email": "ivan@example.com"} """.trimIndent()

val user = Json.decodeFromString<User>(jsonString) println(user) // User(name=Iván, age=28, email=ivan@example.com)}


Ejemplo: serialización a JSON



fun main() {    val user = User(name = "Ana", age = 25, email = "anna@example.com")    val jsonString = Json.encodeToString(user)    println(jsonString)    // {"name":"Ana","age":25,"email":"anna@example.com"}}


Ventajas: seguridad de tipos, velocidad, ausencia de reflexión, soporte para campos anulables, valores predeterminados y objetos anidados.



Librería Gson (de Google)



Gson es una de las librerías más antiguas y populares para trabajar con JSON en el ecosistema JVM. Es simple de usar, pero utiliza reflexión, lo que la hace un poco más lenta que kotlinx.serialization.



Instalación



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


Ejemplo: análisis de JSON



import com.google.gson.Gson

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

fun main() { val gson = Gson() val jsonString = """{"id": 101, "title": "Portátil", "price": 75000.0}"""

val product = gson.fromJson(jsonString, Product::class.java) println(product) // Product(id=101, title=Portátil, price=75000.0)}


Ejemplo: serialización a JSON



fun main() {    val product = Product(id = 202, title = "Ratón", price = 2                

Blogs

Book Recommendations