Trabalho com JSON em Kotlin: parsing e serialização para iniciantes

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: por que o Kotlin sabe trabalhar com JSON?

\n\n

JSON (JavaScript Object Notation) é um formato leve de troca de dados que se tornou padrão para aplicações web modernas e APIs. Se você programa em Kotlin, seja um aplicativo Android ou um backend, mais cedo ou mais tarde precisará fazer parsing de respostas JSON do servidor ou serializar seus objetos para envio.

\n\n

Kotlin é uma linguagem moderna que roda sobre a JVM e é totalmente compatível com Java. No entanto, o Kotlin possui suas próprias ferramentas poderosas para trabalhar com JSON, que tornam o código mais conciso e seguro. Neste artigo, abordaremos duas abordagens mais populares: o uso da biblioteca oficial kotlinx.serialization e a consagrada Gson.

\n\n

O artigo é voltado para iniciantes. Começaremos com o parsing simples de uma string, depois passaremos para a criação de estruturas aninhadas complexas e, no final, abordaremos a serialização — a transformação de seus objetos de volta para JSON.

\n\n

1. Preparação do projeto: dependências e imports

\n\n

Antes de escrever código, é necessário adicionar as bibliotecas. Veremos duas opções.

\n\n

1.1. Instalação do kotlinx.serialization

\n\n

Esta é a solução oficial da JetBrains. Adicione ao arquivo build.gradle.kts:

\n\n
plugins {\n    kotlin("jvm") version "1.9.0"\n    kotlin("plugin.serialization") version "1.9.0"\n}\n\ndependencies {\n    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")\n}\n
\n\n

1.2. Instalação do Gson

\n\n

Gson é uma biblioteca do Google. É mais simples de configurar, mas exige mais trabalho manual:

\n\n
dependencies {\n    implementation("com.google.code.gson:gson:2.10.1")\n}\n
\n\n

Após sincronizar o projeto, você pode escrever o código.

\n\n

2. Parsing de JSON em Kotlin com kotlinx.serialization

\n\n

Esta abordagem é a mais "kotlinística". Você declara data classes e adiciona a anotação @Serializable. A biblioteca gera automaticamente o código para o parsing.

\n\n

2.1. Exemplo simples: dados do usuário

\n\n

Suponha que temos uma string JSON:

\n\n
{\n    "name": "Анна",\n    "age": 25,\n    "email": "anna@example.com"\n}\n
\n\n

Criamos o modelo:

\n\n
import kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\n\n@Serializable\ndata class User(\n    val name: String,\n    val age: Int,\n    val email: String\n)\n\nfun main() {\n    val jsonString = """\n        {\n            "name": "Анна",\n            "age": 25,\n            "email": "anna@example.com"\n        }\n    """.trimIndent()\n\n    val user = Json.decodeFromString<User>(jsonString)\n    println("Nome: ${user.name}, Idade: ${user.age}")\n}\n
\n\n

Como você pode ver, sem mapeamentos manuais — tudo é automático.

\n\n

2.2. Trabalhando com listas e objetos aninhados

\n\n

APIs reais frequentemente retornam arrays. Vamos adicionar o campo address:

\n\n
@Serializable\ndata class Address(\n    val city: String,\n    val street: String\n)\n\n@Serializable\ndata class UserWithAddress(\n    val name: String,\n    val age: Int,\n    val address: Address\n)\n\nfun main() {\n    val jsonArray = """\n        [\n            {"name": "Иван", "age": 30, "address": {"city": "Москва", "street": "Тверская"}},\n            {"name": "Мария", "age": 22, "address": {"city": "СПб", "street": "Невский"}}\n        ]\n    """.trimIndent()\n\n    val users = Json.decodeFromString<List<UserWithAddress>>(jsonArray)\n    users.forEach { println("${it.name} mora em ${it.address.city}") }\n}\n
\n\n

Observe: para trabalhar com listas, usa-se o generic List<UserWithAddress>.

\n\n

3. Parsing de JSON com Gson

\n\n

Gson é uma biblioteca clássica do Java. Ela também funciona muito bem em Kotlin, mas exige um pouco mais de código.

\n\n

3.1. Parsing básico

\n\n
import com.google.gson.Gson\n\ndata cl                

Blogs

Book Recommendations