¿Qué es kotlinx.serialization y para qué sirve?
\n\nkotlinx.serialization es la biblioteca oficial de JetBrains para la serialización y deserialización de datos en Kotlin. Proporciona una forma potente, segura en tipos y multiplataforma de convertir objetos de Kotlin a varios formatos (JSON, Protobuf, CBOR, YAML y otros) y viceversa.
\n\nLas principales razones para usar esta biblioteca son:
\n- \n
- Multiplataforma: Funciona en JVM, JS, Native (iOS, Android, Desktop). \n
- Seguridad de tipos: La serialización se verifica en tiempo de compilación, lo que elimina errores en tiempo de ejecución. \n
- Rendimiento: Utiliza reflexión solo cuando es necesario (a través del plugin del compilador). \n
- Flexibilidad: Soporta serializadores personalizados, polimorfismo, campos opcionales y mucho más. \n
- Integración con Kotlin: Aprovecha al máximo las capacidades del lenguaje (data class, sealed class, null safety). \n
Instalación y configuración
\n\nPara usar kotlinx.serialization, debes agregar el plugin del compilador y la dependencia a tu proyecto.
\n\n1. Agregar el plugin (build.gradle.kts):
\nplugins {\n kotlin("jvm") version "1.9.0" // o tu versión de Kotlin\n kotlin("plugin.serialization") version "1.9.0"\n}\n\n2. Agregar la dependencia:
\ndependencies {\n implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")\n}\n\n3. Para Maven (pom.xml):
\n<plugin>\n <groupId>org.jetbrains.kotlin</groupId>\n <artifactId>kotlin-maven-plugin</artifactId>\n <version>1.9.0</version>\n <configuration>\n <pluginOptions>\n <option>plugin:org.jetbrains.kotlin.plugin.serialization</option>\n </pluginOptions>\n </configuration>\n</plugin>\n\n<dependency>\n <groupId>org.jetbrains.kotlinx</groupId>\n <artifactId>kotlinx-serialization-json</artifactId>\n <version>1.6.2</version>\n</dependency>\n\nInicio rápido: primer ejemplo
\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\nimport kotlinx.serialization.encodeToString\nimport kotlinx.serialization.decodeFromString\n\n// 1. Definimos la clase serializable\n@Serializable\ndata class User(val name: String, val age: Int, val email: String? = null)\n\nfun main() {\n // 2. Creamos un objeto\n val user = User("Alice", 30, "alice@example.com")\n\n // 3. Serializamos a JSON\n val jsonString = Json.encodeToString(user)\n println("JSON serializado: $jsonString")\n\n // 4. Deserializamos de vuelta\n val decodedUser = Json.decodeFromString<User>(jsonString)\n println("Objeto deserializado: $decodedUser")\n}\n\nSalida:
\nJSON serializado: {"name":"Alice","age":30,"email":"alice@example.com"}\nObjeto deserializado: User(name=Alice, age=30, email=alice@example.com)\n\nMétodos y funciones principales (8+)
\n\n1. Json.encodeToString()
\nQué hace: Serializa un objeto de Kotlin a una cadena JSON.
\nParámetros:
\n- \n
value(T) — objeto a serializar. \n serializer(Serializer<T>?) — serializador personalizado opcional. \n
val user = User("Bob", 25)\nval json = Json.encodeToString(user)\nprintln(json) // {"name":"Bob","age":25}\n\n2. Json.decodeFromString()
\nQué hace: Deserializa una cadena JSON a un objeto de Kotlin.
\nParámetros:
\n- \n
string(String) — cadena JSON. \n des
También en la biblioteca
Trabajo con Excel en C# (.NET): Bibliotecas EPPlus y ClosedXML
Análisis de HTML en C# (.NET): bibliotecas HtmlAgilityPack y AngleSharp
Contenedor de Inyección de Dependencias para JavaScript (Node.js): Awilix
Autorización y autenticación en Java: guía completa