Swift Academy · Lektion

Codable: kodning og afkodning af JSON

Tilpas typer til Codable, opret brugerdefinerede CodingKeys, og afkod indlejrede containere.

Lektion 2 af 413 trin

Codable: kodning og afkodning af JSON er en gratis Swift Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Swift Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Swift Academy-kurset indeholder 4 lektioner i alt.

Codable-protokollen

Codable er et typealias for Encodable & Decodable. Typer, der overholder protokollen, kan automatisk kodes til og afkodes fra JSON.

struct User: Codable {
  var name: String
  var age: Int
}

Automatisk generering

Swift genererer Codable-implementeringer, når alle gemte egenskaber selv er Codable.

struct Product: Codable {
  var id: Int
  var title: String
  var price: Double
  // init(from:) and encode(to:) are auto-generated
}

Afkodning af JSON

Brug JSONDecoder til at afkode Data til din Decodable-type.

let json = #"{"name":"Alice","age":30}"#.data(using: .utf8)!
let user = try JSONDecoder().decode(User.self, from: json)
print(user.name) // Alice

Kodning til JSON

Brug JSONEncoder til at kode en Codable-værdi til Data.

let user = User(name: "Bob", age: 25)
let data = try JSONEncoder().encode(user)
print(String(data: data, encoding: .utf8)!)

Tilpassede CodingKeys

Brug en CodingKeys-enum til at knytte Swift-egenskabsnavne sammen med JSON-nøgler.

struct Article: Codable {
  var createdAt: Date
  enum CodingKeys: String, CodingKey {
    case createdAt = "created_at"
  }
}

Strategier til datodekodning

Konfigurér JSONDecoder.dateDecodingStrategy til at fortolke datoer i forskellige formater.

let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
let article = try decoder.decode(Article.self, from: data)

Indlejrede containere

Dekodér indlejrede JSON-objekter ved at definere indlejrede Codable-strukturer eller bruge nøglede containere manuelt.

struct Response: Codable {
  struct Data: Codable {
    var users: [User]
  }
  var data: Data
}
let resp = try JSONDecoder().decode(Response.self, from: json)

Tilpasset dekoderingslogik

Tilsidesæt init(from:) for ikke-standardiserede JSON-strukturer eller for at anvende transformationer under dekodningen.

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

Brug .convertFromSnakeCase til automatisk at konvertere JSON-nøgler i snake_case til Swift-egenskaber i camelCase.

let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let user = try decoder.decode(User.self, from: data)
// "first_name" → firstName

Kodningsindstillinger

Konfigurér JSONEncoder.outputFormatting til formateret eller sorteret output.

let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(product)

Håndtering af valgfrie felter

Markér egenskaber som Optional, så manglende JSON-nøgler håndteres korrekt uden at udløse en fejl.

struct User: Codable {
  var name: String
  var bio: String?  // nil if "bio" key is absent from JSON
}

Hurtig kontrol

Hvilken JSONDecoder-strategi knytter automatisk JSON-nøgler i snake_case sammen med Swift-egenskabsnavne i camelCase?

Opsummering af lektionen

Gør typer kompatible med Codable for automatisk JSON-kodning og -afkodning. Brug CodingKeys til at ændre egenskabsnavne, keyDecodingStrategy = .convertFromSnakeCase til API'er med snake_case, en tilpasset init(from:) til ikke-standardiseret JSON og dateDecodingStrategy til fortolkning af datoer.

Gratis at komme i gang

Lær Swift med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
122
Lektioner
409

Ofte stillede spørgsmål

Er lektionen “Codable: kodning og afkodning af JSON” gratis?

Ja — alle 3 lektioner i læringssporet Swift Academy, inklusive “Codable: kodning og afkodning af JSON”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Swift Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Codable: kodning og afkodning af JSON”?

Tilpas typer til Codable, opret brugerdefinerede CodingKeys, og afkod indlejrede containere. Du øver dig i Swift Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Swift Academy?

Der kræves ingen tidligere erfaring. Swift Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Codable: kodning og afkodning af JSON”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Swift Academy-lektion?

Ja. Alle Swift Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. URLSession data(from:) med async/await
  2. Codable: kodning og afkodning af JSON
  3. Fejlhåndtering og HTTP-statuskoder
  4. Genforsøgslogik og baggrunds-URLSession
← Tilbage til Swift Academy