Serialização de objetos em Kotlin: bibliotecas e exemplos de código

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

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: TypeAdapter personalizado 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ódigo


Exemplo

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:

Recommendations