0Pricing
Swift Academy · Aula

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(_:) retorna Data; converta-o usando String(data:encoding:).
  • outputFormatting com .prettyPrinted e .sortedKeys controla 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

  1. Conformidade com Codable
  2. Codificação com JSONEncoder
  3. Decodificação com JSONDecoder
  4. Tratamento de Tipos Opcionais e Aninhados
← Voltar para Swift Academy