JSON-Verarbeitung in Swift: Codable, Foundation und SwiftyJSON für iOS/macOS

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

JSON-Verarbeitung in Swift (iOS/macOS): vollständiger Leitfaden



JSON (JavaScript Object Notation) ist eines der beliebtesten Formate für den Datenaustausch in modernen Anwendungen. Im Apple-Ökosystem (iOS, macOS, watchOS, tvOS) bietet Swift mehrere leistungsstarke Möglichkeiten zur Arbeit mit JSON. In diesem Artikel werden wir drei Hauptansätze behandeln: das native Codable, das low-level JSONSerialization und die beliebte Drittanbieter-Bibliothek SwiftyJSON. Sie erfahren, wie Sie JSON in Swift mit Codebeispielen parsen, erstellen und verarbeiten.



1. Codable – der moderne Swift-Standard



Seit Swift 4 hat Apple die Protokolle Codable (die Encodable und Decodable vereinen) eingeführt. Dies ist die bequemste und typsicherste Methode zur Arbeit mit JSON. Sie müssen lediglich eine Struktur oder Klasse deklarieren, die Codable entspricht, und JSONEncoder/JSONDecoder verwenden.



Beispiel: JSON-Parsing aus einer API-Antwort



import Foundation

// Definiere ein Modell, das automatisch Codable entsprichtstruct User: Codable { let id: Int let name: String let email: String let isActive: Bool}

// Beispiel-JSON-Stringlet jsonString = """{ "id": 42, "name": "Ivan Petrov", "email": "ivan@example.com", "isActive": true}"""

// Parsingif let jsonData = jsonString.data(using: .utf8) { let decoder = JSONDecoder() do { let user = try decoder.decode(User.self, from: jsonData) print("Benutzer: \\(user.name), E-Mail: \\(user.email)") } catch { print("Dekodierungsfehler: \\(error.localizedDescription)") }}


Beispiel: JSON aus einem Objekt erstellen



let user = User(id: 1, name: "Anna Smirnova", email: "anna@test.com", isActive: false)let encoder = JSONEncoder()encoder.outputFormatting = .prettyPrinted // für schöne Formatierung

if let jsonData = try? encoder.encode(user), let jsonString = String(data: jsonData, encoding: .utf8) { print(jsonString)}


Arbeiten mit verschachtelten Strukturen und Arrays



struct Company: Codable {    let name: String    let employees: [User]}

let companyJson = """{ "name": "TechCorp", "employees": [ {"id": 1, "name": "Oleg", "email": "oleg@tc.com", "isActive": true}, {"id": 2, "name": "Maria", "email": "maria@tc.com", "isActive": false} ]}"""

if let data = companyJson.data(using: .utf8), let company = try? JSONDecoder().decode(Company.self, from: data) { print("Unternehmen: \\(company.name), Mitarbeiter: \\(company.employees.count)")}


2. JSONSerialization – der klassische Ansatz (Foundation)



Vor der Einführung von Codable war JSONSerialization aus Foundation das wichtigste Werkzeug. Es arbeitet mit Foundation-Wörterbüchern und -Arrays ([String: Any] und [Any]). Diese Methode ist nützlich, wenn die JSON-Struktur im Voraus unbekannt oder stark dynamisch ist.



Beispiel: Parsing mit JSONSerialization



if let data = jsonString.data(using: .utf8) {    do {        if let dict = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {            let id = dict["id"] as? Int ?? 0            let name = dict["name"] as? String ?? "Unbekannt"            print("ID: \\(id), Name: \\(name)")        }    } catch {        print("Fehler: \\(error)")    }}


Nachteil: Fehlende Typsicherheit – Typen müssen manuell gecastet werden, was zu Laufzeitfehlern führen kann. Es wird empfohlen, wo immer möglich Codable zu verwenden.



3. SwiftyJSON – praktische Drittanbieter-Bibliothek



SwiftyJSON ist eine beliebte Open-Source-Bibliothek, die die Arbeit mit JSON in Swift vereinfacht. Sie bietet eine saubere und lesbare Syntax, um auf JSON-Werte zuzugreifen, ohne dass manuelle Typumwandlungen erforderlich sind.

Empfehlungen