O que é kotlinx.serialization e para que serve?
\n\nkotlinx.serialization é a biblioteca oficial da JetBrains para serialização e desserialização de dados em Kotlin. Ela fornece uma maneira poderosa, type-safe e multiplataforma de converter objetos Kotlin em vários formatos (JSON, Protobuf, CBOR, YAML e outros) e vice-versa.
\n\nPrincipais razões para usar esta biblioteca:
\n- \n
- Multiplataforma: Funciona em JVM, JS, Native (iOS, Android, Desktop). \n
- Type-safe: A serialização é verificada em tempo de compilação, eliminando erros em tempo de execução. \n
- Desempenho: Usa reflexão apenas quando necessário (através do plugin do compilador). \n
- Flexibilidade: Suporta serializadores personalizados, polimorfismo, campos opcionais e muito mais. \n
- Integração com Kotlin: Utiliza totalmente os recursos da linguagem (data class, sealed class, null safety). \n
Instalação e configuração
\n\nPara usar kotlinx.serialization, é necessário adicionar o plugin do compilador e a dependência ao seu projeto.
\n\n1. Adicionando o plugin (build.gradle.kts):
\nplugins {\n kotlin("jvm") version "1.9.0" // ou sua versão do Kotlin\n kotlin("plugin.serialization") version "1.9.0"\n}\n\n2. Adicionando a dependência:
\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\nInício rápido: primeiro exemplo
\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\nimport kotlinx.serialization.encodeToString\nimport kotlinx.serialization.decodeFromString\n\n// 1. Definindo a classe serializável\n@Serializable\ndata class User(val name: String, val age: Int, val email: String? = null)\n\nfun main() {\n // 2. Criando um objeto\n val user = User("Alice", 30, "alice@example.com")\n\n // 3. Serializando para JSON\n val jsonString = Json.encodeToString(user)\n println("JSON serializado: $jsonString")\n\n // 4. Desserializando de volta\n val decodedUser = Json.decodeFromString<User>(jsonString)\n println("Objeto desserializado: $decodedUser")\n}\n\nSaída:
\nJSON serializado: {"name":"Alice","age":30,"email":"alice@example.com"}\nObjeto desserializado: User(name=Alice, age=30, email=alice@example.com)\n\nPrincipais métodos e funções (8+)
\n\n1. Json.encodeToString()
\nO que faz: Serializa um objeto Kotlin em uma string JSON.
\nParâmetros:
\n- \n
value(T) — objeto para 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()
\nO que faz: Desserializa uma string JSON em um objeto Kotlin.
\nParâmetros:
\n- \n
string(String) — string JSON. \n des