Serialização de objetos em Kotlin: guia completo sobre bibliotecas e ferramentas
Serialização é o processo de converter um objeto em um formato que pode ser salvo (por exemplo, em um arquivo) ou transmitido pela rede (via REST API, mensagens Kafka, etc.). O processo inverso — desserialização — restaura o objeto a partir desse formato. No ecossistema Kotlin, existem várias bibliotecas poderosas para serialização, cada uma com suas características. Neste artigo, abordaremos quatro abordagens principais: kotlinx.serialization, Gson, Moshi e Jackson.
1. kotlinx.serialization — a escolha nativa para Kotlin
Desenvolvida pela JetBrains, a biblioteca kotlinx.serialization é o "padrão ouro" para projetos Kotlin. Ela suporta multiplataforma (JVM, JS, Native) e usa anotações para gerar código em tempo de compilação.
Configuração (Gradle)
plugins { kotlin("jvm") version "1.9.0" kotlin("plugin.serialization") version "1.9.0"}
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")}Exemplo de uso
import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Json
@Serializabledata class User(val name: String, val age: Int, val email: String? = null)
fun main() { val user = User("João", 30, "joao@example.com")
// Serialização para JSON val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"João","age":30,"email":"joao@example.com"}
// Desserialização de JSON val decoded = Json.decodeFromString<User>(jsonString) println(decoded) // User(name=João, age=30, email=joao@example.com)}Características
- Null safety: suporte a campos anuláveis com
? - Polimorfismo: serialização de sealed class e hierarquias
- Formatos personalizados: JSON, CBOR, Protobuf, Properties
- Desempenho: geração de código sem reflexão
2. Gson — o clássico do Google
Gson é uma das bibliotecas mais antigas para Java/Kotlin. É simples de usar, mas utiliza reflexão, o que pode reduzir o desempenho em grandes volumes de dados.
Configuração
implementation("com.google.code.gson:gson:2.10.1")Exemplo
import com.google.gson.Gson
data class Product(val id: Int, val title: String, val price: Double)
fun main() { val gson = Gson() val product = Product(1, "Notebook", 79999.99)
// Serialização val json = gson.toJson(product) println(json) // {"id":1,"title":"Notebook","price":79999.99}
// Desserialização val restored = gson.fromJson(json, Product::class.java) println(restored) // Product(id=1, title=Notebook, price=79999.99)}Características
- Simplicidade: configuração mínima
- Flexibilidade:
TypeAdapterpersonalizado para tipos complexos - Desvantagens: reflexão, sem suporte nativo para Kotlin data class (requer plugin ou
@JvmField)
3. Moshi — alternativa moderna ao Gson
Moshi, da Square, é uma biblioteca leve com suporte nativo para Kotlin. Ela usa geração de código por meio de anotações, tornando-a mais rápida que o Gson.
Configuração
implementation("com.squareup.moshi:moshi-kotlin:1.15.0")kapt("com.squareup.moshi:moshi-kotlin-codegen:1.15.0") // para geração de códigoExemplo
import com.squareup.moshi.Moshiimport com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
@JsonClass(generateAdapter = true)data class Book(val isbn: String, val title: String, val authors: Também na biblioteca
ExcelJS para JavaScript (Node.js): guia completo com exemplos práticos
Mocha para JavaScript (Node.js): guia completo com exemplos
Biblioteca WebSocket Java: Tyrus — implementação JSR 356 para tempo real
Processamento de Imagens em Node.js: Bibliotecas e Ferramentas
Trabalhando com CSV em Swift (iOS/macOS): biblioteca SwiftCSV e fundamentos de parsing