0Pricing
Swift Academy · Lezione

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) // Alice

Codifica 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" → firstName

Opzioni 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

  1. URLSession data(from:) con async/await
  2. Codable: codifica e decodifica JSON
  3. Gestione degli errori e codici di stato HTTP
  4. Logica di retry e URLSession in background
← Torna a Swift Academy