Codificação com JSONEncoder
Produza dados JSON a partir de valores Swift.
Codificação com JSONEncoder é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 2 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 Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
Criando um JSONEncoder
JSONEncoder é o mecanismo principal que transforma qualquer valor Encodable em Data JSON. Crie um e depois chame encode(_:) no seu valor.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let encoder = JSONEncoder()
let data = try encoder.encode(Movie(title: "Up", year: 2009))
print(data.count, "bytes")De Data a uma String legível
encode(_:) retorna Data binários. Para lê-los, decodifique os bytes como UTF-8 usando String(data:encoding:).
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let data = try JSONEncoder().encode(Movie(title: "Up", year: 2009))
let text = String(data: data, encoding: .utf8)!
print(text)Saída formatada
Por padrão, o JSON é compacto. Defina outputFormatting = .prettyPrinted para adicionar indentação e quebras de linha, tornando o resultado fácil de ler para as pessoas.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let data = try encoder.encode(Movie(title: "Up", year: 2009))
print(String(data: data, encoding: .utf8)!)Chaves ordenadas para uma saída estável
Combine as opções em um array. Adicionar .sortedKeys ordena as chaves alfabeticamente, o que torna a saída determinística — ótimo para testes e instantâneos.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
var rating: Double
}
let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(Movie(title: "Up", year: 2009, rating: 4.8))
print(String(data: data, encoding: .utf8)!)Codificando arrays
Você pode codificar coleções diretamente. Um array de valores Encodable torna-se um array JSON.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let list = [Movie(title: "Up", year: 2009),
Movie(title: "Coco", year: 2017)]
let data = try JSONEncoder().encode(list)
print(String(data: data, encoding: .utf8)!)Codificando dicionários
Um dicionário [String: Encodable-element] é codificado como um objeto JSON. Observe que a ordem das chaves não é garantida, a menos que você adicione .sortedKeys.
import Foundation
let scores: [String: Int] = ["alice": 90, "bob": 75]
let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
let data = try encoder.encode(scores)
print(String(data: data, encoding: .utf8)!)Codificando estruturas aninhadas
Tipos Codable aninhados são codificados recursivamente, produzindo objetos JSON aninhados automaticamente.
import Foundation
struct Author: Codable { var name: String }
struct Post: Codable {
var title: String
var author: Author
}
let p = Post(title: "Hello", author: Author(name: "Mae"))
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
print(String(data: try encoder.encode(p), encoding: .utf8)!)Reutilizando um codificador
Um JSONEncoder configurado pode ser reutilizado para muitos valores. Configure-o uma vez e continue aplicando a mesma formatação em todo o seu código.
import Foundation
struct Tag: Codable { var name: String }
let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
for t in [Tag(name: "swift"), Tag(name: "json")] {
let data = try encoder.encode(t)
print(String(data: data, encoding: .utf8)!)
}Codificando números e valores booleanos
Propriedades numéricas e booleanas são codificadas como literais JSON — sem aspas. Strings ficam entre aspas; Int, Double e Bool não.
import Foundation
struct Stats: Codable {
var count: Int
var ratio: Double
var enabled: Bool
}
let data = try JSONEncoder().encode(Stats(count: 3, ratio: 0.75, enabled: true))
print(String(data: data, encoding: .utf8)!)Codificando opcionais
Por padrão, um opcional nil é totalmente omitido do JSON. Um opcional diferente de nil é codificado como o valor que ele contém.
import Foundation
struct Item: Codable {
var name: String
var note: String?
}
let data = try JSONEncoder().encode(Item(name: "Pen", note: nil))
print(String(data: data, encoding: .utf8)!)Reunindo tudo
Um fluxo típico de codificação: construa o valor, configure o codificador, chame encode e depois converta Data em uma String para registro ou transporte.
import Foundation
struct Order: Codable {
var id: Int
var items: [String]
}
let order = Order(id: 42, items: ["a", "b"])
let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(order)
print(String(data: data, encoding: .utf8)!)Verificação rápida: JSONEncoder
Teste seus conhecimentos sobre codificação.
Recapitulação: codificação com JSONEncoder
Você aprendeu a transformar valores Swift em JSON:
encode(_:)retornaData; converta-o usandoString(data:encoding:).outputFormattingcom.prettyPrintede.sortedKeyscontrola o layout.- Arrays, dicionários, tipos aninhados, números, valores booleanos e opcionais são todos codificados de maneira apropriada.
- Um codificador configurado pode ser reutilizado com muitos valores.
Perguntas Frequentes
A aula “Codificação com JSONEncoder” é grátis?
Sim — o texto completo de “Codificação com JSONEncoder” é 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 Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “Codificação com JSONEncoder”?
Produza dados JSON a partir de valores Swift. Você pratica Swift 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 Swift Academy?
Nenhuma experiência prévia é necessária. Swift 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 2 de 4.
Quanto tempo leva a aula “Codificação com JSONEncoder”?
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 Swift Academy?
Sim. Cada aula de Swift 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
- Conformidade com Codable
- Codificação com JSONEncoder
- Decodificação com JSONDecoder
- Tratamento de Tipos Opcionais e Aninhados