0Pricing
Swift Academy · Lektion

Codable: JSON kodieren und dekodieren

Implementieren Sie Codable, benutzerdefinierte CodingKeys und die Dekodierung verschachtelter Container.

Codable: JSON kodieren und dekodieren ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Codable-Protokoll

Codable ist ein Typalias für Encodable & Decodable. Konforme Typen können automatisch in JSON codiert und daraus decodiert werden.

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

Automatische Synthese

Swift synthetisiert Codable-Implementierungen, wenn alle gespeicherten Eigenschaften selbst Codable sind.

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

JSON decodieren

Verwenden Sie JSONDecoder, um Data in Ihren Decodable-Typ zu decodieren.

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

In JSON codieren

Verwenden Sie JSONEncoder, um einen Codable-Wert in Data zu codieren.

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

Benutzerdefinierte CodingKeys

Verwenden Sie ein CodingKeys-Enum, um zwischen Swift-Eigenschaftsnamen und JSON-Schlüsseln zuzuordnen.

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

Strategien zum Dekodieren von Datumsangaben

Konfigurieren Sie JSONDecoder.dateDecodingStrategy, um Datumsangaben in verschiedenen Formaten zu verarbeiten.

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

Verschachtelte Container

Dekodieren Sie verschachtelte JSON-Objekte, indem Sie verschachtelte Codable-Strukturen definieren oder Keyed Container manuell verwenden.

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

Benutzerdefinierte Dekodierungslogik

Überschreiben Sie init(from:) für nicht standardmäßige JSON-Strukturen oder um während des Dekodierens Transformationen anzuwenden.

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

Verwenden Sie .convertFromSnakeCase, um JSON-Schlüssel im snake_case automatisch in Swift-Eigenschaften im camelCase umzuwandeln.

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

Optionen für die Kodierung

Konfigurieren Sie JSONEncoder.outputFormatting für formatierten oder sortierten Output.

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

Optionale Felder behandeln

Markieren Sie Eigenschaften als Optional, damit fehlende JSON-Schlüssel problemlos verarbeitet werden, ohne einen Fehler auszulösen.

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

Kurze Überprüfung

Welche Strategie von JSONDecoder ordnet JSON-Schlüssel im snake_case automatisch den Swift-Eigenschaftsnamen im camelCase zu?

Zusammenfassung der Lektion

Konformieren Sie zu Codable, um JSON automatisch zu kodieren und zu dekodieren. Verwenden Sie CodingKeys, um Eigenschaftsnamen neu zuzuordnen, keyDecodingStrategy = .convertFromSnakeCase für APIs mit snake_case, ein benutzerdefiniertes init(from:) für nicht standardmäßiges JSON und dateDecodingStrategy zum Verarbeiten von Datumsangaben.

Häufig gestellte Fragen

Ist die Lektion „Codable: JSON kodieren und dekodieren“ kostenlos?

Ja — der vollständige Text von „Codable: JSON kodieren und dekodieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Codable: JSON kodieren und dekodieren“?

Implementieren Sie Codable, benutzerdefinierte CodingKeys und die Dekodierung verschachtelter Container. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Codable: JSON kodieren und dekodieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. URLSession data(from:) mit async/await
  2. Codable: JSON kodieren und dekodieren
  3. Fehlerbehandlung und HTTP-Statuscodes
  4. Wiederholungslogik und Hintergrund-URLSession
← Zurück zu Swift Academy