Serialização de objetos em 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

Serialização de objetos em Kotlin: visão geral das bibliotecas e guia prático



Serialização é o processo de converter objetos complexos (classes, estruturas de dados) em um formato adequado para armazenamento ou transmissão pela rede (JSON, XML, Protobuf). A operação inversa — desserialização — restaura o objeto a partir desse formato. Em Kotlin, graças à sua concisão e segurança de tipos, a serialização é implementada de forma especialmente elegante. Neste artigo, abordaremos três abordagens principais: a biblioteca padrão kotlinx.serialization, bem como as populares soluções Java Gson e Jackson, adaptadas para Kotlin.



1. kotlinx.serialization — solução oficial da JetBrains



A biblioteca kotlinx.serialization faz parte do ecossistema Kotlin e é mantida pelos desenvolvedores da linguagem. Ela oferece uma abordagem nativa sem reflexão, garantindo alta performance e segurança de tipos 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: classe básica e serialização

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("Alexei", 30, "alex@example.com") val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"Alexei","age":30,"email":"alex@example.com"}

val decoded = Json.decodeFromString<User>(jsonString) println(decoded) // User(name=Alexei, age=30, email=alex@example.com)}


Vantagens

  • Segurança de tipos: erros de serialização são detectados em tempo de compilação.
  • Suporte multiplataforma: funciona em JVM, JS, Native (KMP).
  • Extensibilidade: serializadores personalizados para tipos complexos.
  • Suporte nativo para null, enum, sealed class, coleções.


Exemplo avançado: objetos aninhados e listas

@Serializabledata class Address(val city: String, val street: String)

@Serializabledata class Person(val name: String, val addresses: List<Address>)

fun main() { val person = Person("Maria", listOf( Address("Moscou", "Tverskaya"), Address("SPb", "Nevsky") )) val json = Json { prettyPrint = true } println(json.encodeToString(person)) // { // "name": "Maria", // "addresses": [ // { "city": "Moscou", "street": "Tverskaya" }, // { "city": "SPb", "street": "Nevsky" } // ] // }}


2. Gson — leve e simples



A biblioteca Gson do Google é amplamente conhecida no mundo Java. Para Kotlin, ela é usada com configuração adicional para lidar corretamente com data class e campos anuláveis.



Configuração

implementation("com.google.code.gson:gson:2.10.1")


Exemplo com Gson

import com.google.gson.Gsonimport com.google.gson.reflect.TypeToken

data class Product(val id: Int, val title: String, val price: Double?)

fun main() { val gson = Gson() val product = Product(1, "Notebook", 75000.0) val json = gson.toJson(product) println(json) // {"id":1,"title":"Notebook","price":75000.0}

val back = gson.fromJson(json, Product::class.java) println(back) // Product(id=1, title=Notebook, price=75000.0)}


Características

  • Não requer anotações — funciona com qualquer classe.
  • Requer especificação explícita do tipo na desserialização (pode ser inconveniente com genéricos).
  • Por padrão, não processa

Recommendations