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) // AliceIn 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" → firstNameOptionen 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
- URLSession data(from:) mit async/await
- Codable: JSON kodieren und dekodieren
- Fehlerbehandlung und HTTP-Statuscodes
- Wiederholungslogik und Hintergrund-URLSession