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
emailen el ejemplo). - Configuración a través de DSL:
prettyPrint,ignoreUnknownKeysy 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 También en la biblioteca
Event Bus y el patrón Observer en Java: implementación de una arquitectura débilmente acoplada
StackExchange.Redis para C# (.NET): guía completa con ejemplos
SwiftyUserDefaults para Swift: guía completa con ejemplos
Trabajo con imágenes en Swift (iOS/macOS): guía completa
Caché en C++: biblioteca Cache++
Recommendations