Serialization (kotlinx) para Kotlin: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é kotlinx.serialization e para que serve?

\n\n

kotlinx.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\n

Principais 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
\n\n

Instalação e configuração

\n\n

Para usar kotlinx.serialization, é necessário adicionar o plugin do compilador e a dependência ao seu projeto.

\n\n

1. Adicionando o plugin (build.gradle.kts):

\n
plugins {\n    kotlin("jvm") version "1.9.0" // ou sua versão do Kotlin\n    kotlin("plugin.serialization") version "1.9.0"\n}
\n\n

2. Adicionando a dependência:

\n
dependencies {\n    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")\n}
\n\n

3. 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\n

Início rápido: primeiro exemplo

\n\n
import 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\n

Saída:

\n
JSON serializado: {"name":"Alice","age":30,"email":"alice@example.com"}\nObjeto desserializado: User(name=Alice, age=30, email=alice@example.com)
\n\n

Principais métodos e funções (8+)

\n\n

1. Json.encodeToString()

\n

O que faz: Serializa um objeto Kotlin em uma string JSON.

\n

Parâmetros:

\n
    \n
  • value (T) — objeto para serializar.
  • \n
  • serializer (Serializer<T>?) — serializador personalizado opcional.
  • \n
\n
val user = User("Bob", 25)\nval json = Json.encodeToString(user)\nprintln(json) // {"name":"Bob","age":25}
\n\n

2. Json.decodeFromString()

\n

O que faz: Desserializa uma string JSON em um objeto Kotlin.

\n

Parâmetros:

\n
    \n
  • string (String) — string JSON.
  • \n
  • des

Recommendations