Processamento JSON em Kotlin: bibliotecas e exemplos de uso

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

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 @SerializedName para mapeamento de campos.
  • - O uso de reflexão pode reduzir o desempenho.
  • - Problemas com tratamento de null e 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

Recommendations