Codable: codifica e decodifica JSON
Adottare Codable, definire CodingKeys personalizzati e decodificare container annidati.
Codable: codifica e decodifica JSON è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.
Protocollo Codable
Codable è un alias di tipo per Encodable & Decodable. I tipi conformi possono essere codificati in JSON e decodificati da JSON automaticamente.
struct User: Codable {
var name: String
var age: Int
}Sintesi automatica
Swift sintetizza le implementazioni di Codable quando tutte le proprietà memorizzate sono a loro volta Codable.
struct Product: Codable {
var id: Int
var title: String
var price: Double
// init(from:) and encode(to:) are auto-generated
}Decodifica del JSON
Usi JSONDecoder per decodificare Data nel tipo Decodable.
let json = #"{"name":"Alice","age":30}"#.data(using: .utf8)!
let user = try JSONDecoder().decode(User.self, from: json)
print(user.name) // AliceCodifica in JSON
Usi JSONEncoder per codificare un valore Codable in Data.
let user = User(name: "Bob", age: 25)
let data = try JSONEncoder().encode(user)
print(String(data: data, encoding: .utf8)!)CodingKeys personalizzati
Utilizzi un'enumerazione CodingKeys per associare i nomi delle proprietà Swift alle chiavi JSON.
struct Article: Codable {
var createdAt: Date
enum CodingKeys: String, CodingKey {
case createdAt = "created_at"
}
}Strategie di decodifica delle date
Configuri JSONDecoder.dateDecodingStrategy per analizzare le date in diversi formati.
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
let article = try decoder.decode(Article.self, from: data)Contenitori annidati
Decodifichi gli oggetti JSON annidati definendo struct Codable annidate oppure utilizzando manualmente contenitori con chiavi.
struct Response: Codable {
struct Data: Codable {
var users: [User]
}
var data: Data
}
let resp = try JSONDecoder().decode(Response.self, from: json)Logica di decodifica personalizzata
Sovrascriva init(from:) per gestire strutture JSON non standard o applicare trasformazioni durante la decodifica.
struct Rating: Codable {
var stars: Int
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
let raw = try container.decode(Double.self)
stars = Int(raw.rounded())
}
func encode(to encoder: Encoder) throws {
var container = encoder.singleValueContainer()
try container.encode(Double(stars))
}
}keyDecodingStrategy
Utilizzi .convertFromSnakeCase per convertire automaticamente le chiavi JSON in snake_case nelle proprietà Swift in camelCase.
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let user = try decoder.decode(User.self, from: data)
// "first_name" → firstNameOpzioni di codifica
Configuri JSONEncoder.outputFormatting per ottenere un output formattato o ordinato.
let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(product)Gestione dei campi facoltativi
Contrassegni le proprietà come Optional per gestire correttamente le chiavi JSON mancanti senza generare errori.
struct User: Codable {
var name: String
var bio: String? // nil if "bio" key is absent from JSON
}Verifica rapida
Quale strategia di JSONDecoder associa automaticamente le chiavi JSON in snake_case ai nomi delle proprietà Swift in camelCase?
Riepilogo della lezione
Conformi i tipi a Codable per eseguire automaticamente la codifica e la decodifica JSON. Utilizzi CodingKeys per rimappare i nomi delle proprietà, keyDecodingStrategy = .convertFromSnakeCase per le API con chiavi in snake_case, init(from:) personalizzato per il JSON non standard e dateDecodingStrategy per analizzare le date.
Domande Frequenti
La lezione «Codable: codifica e decodifica JSON» è gratuita?
Sì — il testo completo di «Codable: codifica e decodifica JSON» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.
Cosa imparerò in «Codable: codifica e decodifica JSON»?
Adottare Codable, definire CodingKeys personalizzati e decodificare container annidati. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Codable: codifica e decodifica JSON»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- URLSession data(from:) con async/await
- Codable: codifica e decodifica JSON
- Gestione degli errori e codici di stato HTTP
- Logica di retry e URLSession in background