O que é kotlinx.serialization?
Kotlinx.serialization é a biblioteca oficial do Kotlin para serialização e desserialização de dados, incluindo o formato JSON. Ela fornece uma maneira poderosa e type-safe de converter objetos Kotlin para JSON e vice-versa, sem usar reflexão e com suporte multiplataforma (JVM, JS, Native).
Por que o processamento JSON é necessário em Kotlin?
No desenvolvimento moderno com Kotlin (Android, aplicações servidor com Ktor, projetos multiplataforma), trabalhar com JSON é uma tarefa obrigatória: troca de dados com REST API, arquivos de configuração, armazenamento de dados. O kotlinx.serialization resolve isso de forma eficiente, segura e com o mínimo de código boilerplate.
Instalação
Para usar a biblioteca, adicione o plugin no build.gradle.kts:
plugins { kotlin("plugin.serialization") version "1.9.22"}
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")}Para Maven, adicione a dependência e o plugin kotlin-maven-plugin com a configuração de serialization.
Funções principais
- @Serializable — anotação para classes que precisam ser serializadas.
- Json.encodeToString() — conversão de um objeto em uma string JSON.
- Json.decodeFromString() — parsing de uma string JSON para um objeto.
- JsonObject / JsonElement — trabalho dinâmico com JSON sem criar DTOs.
- @Transient, @Required, @SerialName — ajuste fino dos campos.
- JsonConfiguration — configurações de formatação (prettyPrint, ignoreUnknownKeys).
Exemplo de código em Kotlin
import kotlinx.serialization.*import kotlinx.serialization.json.*
@Serializabledata class User(val name: String, val age: Int)
fun main() { val user = User("Алиса", 30) // Serialização val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"Алиса","age":30} // Desserialização val decodedUser = Json.decodeFromString<User>(jsonString) println(decodedUser) // User(name=Алиса, age=30) // Trabalhando com JSON dinâmico val jsonObject = Json.parseToJsonElement("""{"city":"Москва","zip":101000}""").jsonObject println(jsonObject["city"]) // "Москва"}Quando usar
A biblioteca é ideal para:
- Aplicações Android (Retrofit + kotlinx.serialization).
- Projetos servidor com Ktor.
- Aplicações multiplataforma (KMP).
- Qualquer projeto que precise de trabalho rápido e seguro com JSON sem reflexão.
Ela supera Gson e Jackson em desempenho e segurança de tipos, especialmente em projetos Kotlin.