Processamento JSON em Kotlin: visão geral das bibliotecas e exemplos práticos
JSON (JavaScript Object Notation) continua sendo um dos formatos mais populares para troca de dados entre cliente e servidor. Na linguagem Kotlin, que é amplamente utilizada para desenvolvimento de aplicativos Android e soluções de servidor, existem várias bibliotecas poderosas para trabalhar com JSON. Neste artigo, vamos detalhar as principais ferramentas: kotlinx.serialization, Gson, Moshi e Klaxon. Você aprenderá como fazer parsing de JSON, serializar objetos e processar dados de forma eficiente.
1. kotlinx.serialization — abordagem nativa da JetBrains
kotlinx.serialization é a biblioteca oficial dos criadores do Kotlin. Sua principal vantagem é a integração completa com o sistema de tipos da linguagem e o suporte a multiplataforma (KMM). Para usá-la, é necessário adicionar o plugin no build.gradle.kts:
plugins { kotlin("plugin.serialization") version "1.9.22"}
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")}Exemplo de serialização e desserialização de dados:
import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Json
@Serializabledata class User(val id: Int, val name: String, val email: String)
fun main() { val jsonString = """{"id":1,"name":"Ana","email":"ana@example.com"}""" // Desserialização val user = Json.decodeFromString<User>(jsonString) println("Usuário: ${user.name}, email: ${user.email}") // Serialização val output = Json.encodeToString(user) println(output)}Características:
- Não requer reflexão (funciona em tempo de compilação).
- Suporta serializadores personalizados e polimorfismo.
- Ideal para Kotlin Multiplatform Mobile.
2. Gson — clássico do Google
A biblioteca Gson é conhecida por sua simplicidade e ampla adoção. Ela usa reflexão, sendo adequada para projetos onde a rapidez de configuração é importante. Adição da dependência:
dependencies { implementation("com.google.code.gson:gson:2.10.1")}Exemplo de uso:
import com.google.gson.Gson
data class Product(val id: Int, val title: String, val price: Double)
fun main() { val gson = Gson() val json = """{"id":101,"title":"Notebook","price":79990.0}""" // Parsing val product = gson.fromJson(json, Product::class.java) println("Produto: ${product.title}, preço: ${product.price}") // Conversão reversa val newJson = gson.toJson(product) println(newJson)}Prós e contras:
- + Mínimo de código para cenários básicos.
- + Suporte à anotação
@SerializedNamepara mapeamento de campos. - - O uso de reflexão pode reduzir o desempenho.
- - Problemas com tratamento de
nulle tipos genéricos.
3. Moshi — alternativa moderna da Square
Moshi foi criada como uma substituição mais segura e rápida para o Gson. Ela também usa reflexão, mas oferece geração de código através da anotação @JsonClass. Adição da dependência:
dependencies { implementation("com.squareup.moshi:moshi-kotlin:1.15.0") ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")}Exemplo de uso com geração de código:
import com.squareup.moshi.JsonClassimport com.squareup.moshi.Moshi
@JsonClass(generateAdapter = true)data class Book(val isbn: String, val author: String, val year: Int)
fun main() { val moshi = Moshi.Builder().build() val adapter = moshi.adapter(Book::class.java) val json = """{"isbn":"978-5-17-123456-7","autho Também na biblioteca
Agendador de Tarefas Java: Quartz Scheduler — Guia Completo
MongoDB.Driver para C# (.NET): guia completo com exemplos
Parsing de HTML em Node.js: visão geral das melhores bibliotecas e ferramentas