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 = JsonCodificando 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
- Configuração de kotlinx.serialization
- Classes Serializáveis
- Codificação e Decodificação de JSON
- Serializadores Personalizados