Trabalhando com JSON em Kotlin: parsing e serialização de dados

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

Introdução ao Trabalho com JSON em Kotlin



JSON (JavaScript Object Notation) é um dos formatos mais populares para troca de dados entre um servidor e um cliente. No desenvolvimento moderno com Kotlin, seja em aplicações Android ou projetos server-side, a capacidade de trabalhar eficientemente com JSON é uma habilidade essencial. Neste artigo, examinaremos detalhadamente como realizar parsing e serialização de JSON em Kotlin usando as bibliotecas mais populares: kotlinx.serialization e Gson.



Seja criando uma API REST, processando respostas de serviços externos ou salvando configurações locais, entender os princípios de trabalhar com JSON ajudará você a escrever código mais limpo e eficiente.



Fundamentos do Parsing de JSON em Kotlin



O que são Serialização e Desserialização?



Antes de ir para o código, é importante entender dois conceitos-chave:



  • Serialização — converter um objeto Kotlin (data class, lista, etc.) em uma string JSON.
  • Desserialização (Parsing) — o processo inverso: criar um objeto Kotlin a partir de uma string JSON.


Kotlin não possui suporte nativo a JSON, portanto usamos bibliotecas de terceiros. Vamos analisar as duas mais populares.



A Biblioteca kotlinx.serialization



kotlinx.serialization é uma biblioteca oficial da JetBrains que se integra perfeitamente com a linguagem Kotlin. Ela funciona em tempo de compilação, garantindo alto desempenho e segurança de tipos.



Adicionando a Biblioteca



Primeiro, adicione o plugin ao build.gradle.kts:



plugins {    kotlin("plugin.serialization") version "1.9.22"}

dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")}


Definindo o Modelo de Dados



Vamos criar uma classe para representar um usuário:



import kotlinx.serialization.Serializable

@Serializabledata class User( val name: String, val age: Int, val email: String? = null, // campo anulável val roles: List<String> = emptyList())


A anotação @Serializable informa ao compilador que esta classe pode ser serializada.



Serialização (Objeto → JSON)



import kotlinx.serialization.encodeToStringimport kotlinx.serialization.json.Json

fun main() { val user = User( name = "Anna", age = 28, email = "anna@example.com", roles = listOf("admin", "user") )

val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"Anna","age":28,"email":"anna@example.com","roles":["admin","user"]}}


Desserialização (JSON → Objeto)



import kotlinx.serialization.decodeFromString

fun main() { val json = """{"name":"Ivan","age":35,"roles":["user"]}""" val user = Json.decodeFromString<User>(json) println(user.name) // Ivan println(user.email) // null (não especificado no JSON)}


Configurando as Opções do Json



Você pode personalizar o comportamento do parser:



val json = Json {    prettyPrint = true          // formatação bonita    ignoreUnknownKeys = true    // ignorar campos extras no JSON    isLenient = true            // permitir parsing flexível (ex.: aspas)}

val user = json.decodeFromString<User>(jsonString)


A Biblioteca Gson



Gson do Google é outra biblioteca popular, especialmente comum no desenvolvimento Android.



Adicionando Gson



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 product = Product(1, "Laptop", 999.99) // Serialização val json = gson.toJson(product) println(json) // {"id":1,"title":"Laptop","price":999.99} // Desserialização val jsonString = """{"id":2,"title":"Mouse","price":25.50}""" val parsedProduct = gson.fromJson(jsonString, Product::class.java) println(parsedProduct.title) // Mouse}

Blogs

Book Recommendations