Kotlin JSON: guia de parsing do zero ao profissional

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 JSON em Kotlin é dor e alegria ao mesmo tempo

\n

Se você já escreveu para Android ou backend em Kotlin, certamente já encontrou JSON. É como o ar para o desenvolvedor moderno: APIs, configurações, bancos de dados — tudo fala essa língua. Mas eis o paradoxo: a pergunta "How to parse JSON in Kotlin?" no Stack Overflow recebe milhares de visualizações todo mês. Por quê? Porque em Kotlin, ao contrário de Java, existe null safety, e bibliotecas antigas como Gson começam a "dar problemas".

\n

Neste tutorial, abordaremos parsing de JSON em Kotlin do simples ao complexo. Você aprenderá a trabalhar com Kotlinx Serialization, Moshi e o clássico Gson. Escreveremos código real que pode ser copiado diretamente para o seu projeto. Vamos lá!

\n\n
\n\n

O que é JSON e por que Kotlin não se dá bem com ele de imediato?

\n

JSON (JavaScript Object Notation) é um formato textual para troca de dados. Ele se parece com isto:

\n
{\n  "name": "Kotlin",\n  "year": 2011,\n  "features": ["null safety", "coroutines"]\n}
\n

À primeira vista, o que poderia dar errado? Mas em Kotlin, há tipagem forte e null safety. Ao fazer parsing de JSON, você deve indicar explicitamente quais campos podem ser null e quais são obrigatórios. Se a biblioteca não levar isso em conta, você terá NullPointerException ou bugs estranhos.

\n

É por isso que escolher a biblioteca certa para parsing de JSON em Kotlin não é apenas "uma questão de gosto", mas sim de estabilidade do projeto.

\n\n

Top 3 bibliotecas para parsing de JSON em Kotlin

\n

Abordaremos três abordagens principais. Cada uma tem seus prós e contras.

\n
    \n
  • Kotlinx Serialization — biblioteca oficial da JetBrains. Melhor integração com a linguagem.
  • \n
  • Moshi — biblioteca moderna da Square. Funciona tanto com Java quanto com Kotlin.
  • \n
  • Gson — o bom e velho padrão. Ainda popular, mas requer cuidado com Kotlin.
  • \n
\n\n

1. Kotlinx Serialization — a escolha dos profissionais

\n

Esta é a biblioteca nativa para Kotlin. Ela usa geração de código e suporta totalmente null safety. Se você está escrevendo um novo projeto em Kotlin, esta é a sua escolha.

\n

Instalação: Adicione o plugin no build.gradle.kts:

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

Exemplo de código:

\n
import kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\n\n@Serializable\ndata class User(\n    val name: String,\n    val year: Int,\n    val features: List<String>\n)\n\nfun main() {\n    val jsonString = """\n        {\n            "name": "Kotlin",\n            "year": 2011,\n            "features": ["null safety", "coroutines"]\n        }\n    """.trimIndent()\n\n    val user = Json.decodeFromString<User>(jsonString)\n    println(user.name) // Kotlin\n    println(user.features[0]) // null safety\n}
\n

Observe: Kotlinx Serialization captura automaticamente os tipos. Se um campo estiver ausente no JSON e não estiver marcado como nullable no data class, você receberá uma exceção. Isso é bom — você não deixará passar um erro.

\n\n

2. Moshi — flexível e rápido

\n

Moshi é uma biblioteca da Square, criada pensando em Kotlin. Ela também suporta geração de código e null safety. Ao contrário do Gson, o Moshi não usa reflexão por padrão, o que o torna mais rápido.

\n

Instalação:

\n
dependencies {\n    implementation("com.squareup.moshi:moshi-kotlin:1.15.0")\n    ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")\n}
\n

Exemplo de código:

\n
im                

Blogs

Book Recommendations