0Pricing
Kotlin Academy · Aula

Codificação e Decodificação de JSON

Converta de e para JSON

Codificação e Decodificação de JSON é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.

O objeto Json

O objeto Json é o núcleo da codificação e da decodificação. A instância padrão está pronta para uso, ou você pode criar uma configurada.

import kotlinx.serialization.json.Json

val json = Json

Codificando em uma cadeia de caracteres

Use encodeToString para transformar um objeto em uma cadeia de caracteres JSON.

import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json

@Serializable
data class Book(val title: String, val pages: Int)

fun main() {
    val book = Book("Kotlin in Action", 360)
    val text = Json.encodeToString(book)
    println(text)
}

Decodificando de uma cadeia de caracteres

Use decodeFromString para analisar o JSON e transformá-lo novamente em um objeto. O tipo de destino é inferido ou fornecido explicitamente.

import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json

@Serializable
data class Book(val title: String, val pages: Int)

fun main() {
    val text = "{\"title\":\"Atomic Kotlin\",\"pages\":500}"
    val book = Json.decodeFromString<Book>(text)
    println(book.title)
}

Codificando listas

As coleções são codificadas automaticamente. Uma lista de objetos serializáveis se torna uma matriz JSON.

import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json

@Serializable
data class Tag(val name: String)

fun main() {
    val tags = listOf(Tag("kotlin"), Tag("json"))
    println(Json.encodeToString(tags))
}

Formatação legível

Configure um construtor Json { } para ativar a saída indentada, útil para registrar informações e depurar.

import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json

@Serializable
data class Point(val x: Int, val y: Int)

val pretty = Json { prettyPrint = true }

fun main() {
    println(pretty.encodeToString(Point(1, 2)))
}

Ignorando chaves desconhecidas

Por padrão, a decodificação falha se o JSON contiver chaves que não estejam na sua classe. Defina ignoreUnknownKeys = true para ignorá-las — isso é útil quando as APIs evoluem.

import kotlinx.serialization.json.Json

val lenient = Json { ignoreUnknownKeys = true }

Codificando valores padrão

Por padrão, propriedades cujo valor seja igual ao valor padrão não são gravadas. Ative encodeDefaults = true para sempre incluí-las.

import kotlinx.serialization.json.Json

val withDefaults = Json { encodeDefaults = true }

Trabalhando com JsonElement

Para trabalhar com JSON dinâmico, você pode analisá-lo em uma árvore de JsonElement em vez de usar uma classe tipada.

import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement

fun main() {
    val element: JsonElement = Json.parseToJsonElement("{\"a\":1}")
    println(element)
}

Lendo campos de JsonObject

Converta um JsonElement para JsonObject e acesse os campos por chave; em seguida, converta os valores primitivos.

import kotlinx.serialization.json.Json
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import kotlinx.serialization.json.int

fun main() {
    val obj = Json.parseToJsonElement("{\"a\":1}").jsonObject
    val a = obj["a"]!!.jsonPrimitive.int
    println(a)
}

Conversão de ida e volta

Codificar e depois decodificar deve devolver um objeto igual, em uma conversão de ida e volta. Essa é uma ótima forma de verificar a coerência do seu modelo.

import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json

@Serializable
data class P(val x: Int)

fun main() {
    val original = P(42)
    val back = Json.decodeFromString<P>(Json.encodeToString(original))
    println(original == back)
}

Erros comuns de decodificação

Fique atento a estas exceções em tempo de execução:

  • SerializationException: Unexpected JSON token — JSON malformado
  • Campo obrigatório ausente — o JSON não contém uma propriedade sem valor padrão
  • Chave desconhecida — desative a validação estrita com ignoreUnknownKeys

Verificação rápida

Sua API adiciona novos campos JSON com frequência. Qual configuração impede que a decodificação seja interrompida?

Recapitulação

Agora você pode alternar entre objetos e JSON:

  • encodeToString / decodeFromString
  • Configure com Json { }: prettyPrint, ignoreUnknownKeys, encodeDefaults
  • Analise JSON dinâmico por meio de JsonElement

Em seguida: serializadores personalizados para tipos não compatíveis.

Perguntas Frequentes

A aula “Codificação e Decodificação de JSON” é grátis?

Sim — o texto completo de “Codificação e Decodificação de JSON” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.

O que vou aprender em “Codificação e Decodificação de JSON”?

Converta de e para JSON Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Kotlin Academy?

Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Codificação e Decodificação de JSON”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Kotlin Academy?

Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Configuração de kotlinx.serialization
  2. Classes Serializáveis
  3. Codificação e Decodificação de JSON
  4. Serializadores Personalizados
← Voltar para Kotlin Academy