Processamento de JSON em Kotlin: bibliotecas, ferramentas e exemplos de código
JSON (JavaScript Object Notation) é um dos formatos de troca de dados mais populares no desenvolvimento web moderno. Ao criar aplicações em Kotlin, seja Android, backend ou desktop, quase sempre é necessário fazer parsing e gerar JSON. Neste artigo, vamos analisar detalhadamente as principais bibliotecas para trabalhar com JSON em Kotlin, suas funcionalidades, vantagens e fornecer exemplos práticos de código.
Por que é necessário um processamento separado de JSON em Kotlin?
Kotlin é uma linguagem estaticamente tipada que roda sobre a JVM (além de Native e JS). Ao contrário de linguagens dinâmicas, onde o JSON pode ser convertido em um dicionário "em tempo real", em Kotlin é comum trabalhar com objetos tipados. Isso aumenta a confiabilidade do código e permite que a IDE sugira automaticamente os campos. Para converter JSON em objetos Kotlin (data classes) e vice-versa, são utilizadas bibliotecas de serialização/desserialização.
Principais bibliotecas para JSON em Kotlin
Vamos considerar as três bibliotecas mais populares: kotlinx.serialization (recomendada pela JetBrains), Gson (do Google) e Moshi (do Square).
1. kotlinx.serialization
Esta é a biblioteca oficial de serialização para Kotlin, mantida pela JetBrains. Ela funciona de forma multiplataforma (JVM, Native, JS) e não utiliza reflexão, o que proporciona alto desempenho e segurança de tipos.
Instalação: adicione o plugin e a dependência 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 uso:
import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Jsonimport kotlinx.serialization.encodeToStringimport kotlinx.serialization.decodeFromString
@Serializabledata class User(val name: String, val age: Int, val email: String? = null)
fun main() { val json = Json { prettyPrint = true; ignoreUnknownKeys = true }
// Serialização (objeto -> JSON) val user = User("Alexei", 30, "alex@example.com") val jsonString = json.encodeToString(user) println(jsonString)
// Desserialização (JSON -> objeto) val input = """{"name":"Maria","age":25}""" val parsedUser = json.decodeFromString<User>(input) println(parsedUser)}Características:
- Suporte a campos anuláveis (como
emailno exemplo). - Configurações via DSL:
prettyPrint,ignoreUnknownKeyse outras. - Trabalho com enum, sealed classes, objetos aninhados.
- Multiplataforma — um único código para Android, iOS, web.
2. Gson
Gson é uma biblioteca clássica do Google, amplamente utilizada no mundo Java. Em Kotlin, ela também funciona, mas requer cuidado com tipos anuláveis e data classes.
Instalação:
dependencies { implementation("com.google.code.gson:gson:2.10.1")}Exemplo:
import com.google.gson.Gsonimport com.google.gson.GsonBuilder
data class Product(val id: Int, val title: String, val price: Double)
fun main() { val gson: Gson = GsonBuilder().setPrettyPrinting().create()
// Serialização val product = Product(1, "Notebook", 89999.99) val json = gson.toJson(product) println(json)
// Desserialização val jsonString = """{"id":2,"title":"Mouse","price":1500.50}""" val parsed = gson.fromJson(jsonString, Product::class.java) println(parsed)}Importante: Gson usa reflexão, portanto, para data classes Kotlin pode ser necessário @JvmOverloads ou configuração do Também na biblioteca
Recommendations