Encodieren mit JSONEncoder
Erzeugen Sie JSON-Daten aus Swift-Werten.
Encodieren mit JSONEncoder 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.
Einen JSONEncoder erstellen
JSONEncoder ist das Arbeitstier, das jeden Encodable-Wert in JSON-Data umwandelt. Erstellen Sie einen Encoder und rufen Sie anschließend encode(_:) für Ihren Wert auf.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let encoder = JSONEncoder()
let data = try encoder.encode(Movie(title: "Up", year: 2009))
print(data.count, "bytes")Von Data zu einem lesbaren String
encode(_:) gibt binäres Data zurück. Um es zu lesen, dekodieren Sie die Bytes mit String(data:encoding:) als UTF-8.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let data = try JSONEncoder().encode(Movie(title: "Up", year: 2009))
let text = String(data: data, encoding: .utf8)!
print(text)Formatierte Ausgabe
JSON ist standardmäßig kompakt. Setzen Sie outputFormatting = .prettyPrinted, um Einrückungen und Zeilenumbrüche hinzuzufügen und das Ergebnis für Menschen leichter lesbar zu machen.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let data = try encoder.encode(Movie(title: "Up", year: 2009))
print(String(data: data, encoding: .utf8)!)Sortierte Schlüssel für stabile Ausgabe
Kombinieren Sie Optionen in einem Array. Mit .sortedKeys werden Schlüssel alphabetisch sortiert, wodurch die Ausgabe deterministisch wird – ideal für Tests und Snapshots.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
var rating: Double
}
let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(Movie(title: "Up", year: 2009, rating: 4.8))
print(String(data: data, encoding: .utf8)!)Arrays kodieren
Sie können Sammlungen direkt kodieren. Ein Array aus Encodable-Werten wird zu einem JSON-Array.
import Foundation
struct Movie: Codable {
var title: String
var year: Int
}
let list = [Movie(title: "Up", year: 2009),
Movie(title: "Coco", year: 2017)]
let data = try JSONEncoder().encode(list)
print(String(data: data, encoding: .utf8)!)Wörterbücher kodieren
Ein [String: Encodable-element]-Wörterbuch wird zu einem JSON-Objekt kodiert. Beachten Sie, dass die Reihenfolge der Schlüssel nicht garantiert ist, sofern Sie nicht .sortedKeys hinzufügen.
import Foundation
let scores: [String: Int] = ["alice": 90, "bob": 75]
let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
let data = try encoder.encode(scores)
print(String(data: data, encoding: .utf8)!)Verschachtelte Strukturen kodieren
Verschachtelte Codable-Typen werden rekursiv kodiert und automatisch als verschachtelte JSON-Objekte dargestellt.
import Foundation
struct Author: Codable { var name: String }
struct Post: Codable {
var title: String
var author: Author
}
let p = Post(title: "Hello", author: Author(name: "Mae"))
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
print(String(data: try encoder.encode(p), encoding: .utf8)!)Einen Encoder wiederverwenden
Ein konfigurierter JSONEncoder kann für viele Werte wiederverwendet werden. Konfigurieren Sie ihn einmal und verwenden Sie in Ihrem gesamten Code dieselbe Formatierung.
import Foundation
struct Tag: Codable { var name: String }
let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
for t in [Tag(name: "swift"), Tag(name: "json")] {
let data = try encoder.encode(t)
print(String(data: data, encoding: .utf8)!)
}Zahlen und boolesche Werte kodieren
Numerische und boolesche Eigenschaften werden als JSON-Literale kodiert – ohne Anführungszeichen. Strings stehen in Anführungszeichen; Int, Double und Bool nicht.
import Foundation
struct Stats: Codable {
var count: Int
var ratio: Double
var enabled: Bool
}
let data = try JSONEncoder().encode(Stats(count: 3, ratio: 0.75, enabled: true))
print(String(data: data, encoding: .utf8)!)Optionals kodieren
Standardmäßig wird ein optionaler Wert mit nil vollständig aus dem JSON weggelassen. Ein nicht-nil-Optional wird als sein enthaltener Wert kodiert.
import Foundation
struct Item: Codable {
var name: String
var note: String?
}
let data = try JSONEncoder().encode(Item(name: "Pen", note: nil))
print(String(data: data, encoding: .utf8)!)Alles zusammenführen
Ein typischer Kodierungsablauf: Erstellen Sie den Wert, konfigurieren Sie den Encoder, rufen Sie encode auf und wandeln Sie anschließend Data für Protokollierung oder Übertragung in einen String um.
import Foundation
struct Order: Codable {
var id: Int
var items: [String]
}
let order = Order(id: 42, items: ["a", "b"])
let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(order)
print(String(data: data, encoding: .utf8)!)Schnelltest: JSONEncoder
Testen Sie Ihr Wissen über das Kodieren.
Rückblick: Mit JSONEncoder kodieren
Sie haben gelernt, Swift-Werte in JSON umzuwandeln:
encode(_:)gibtDatazurück; wandeln Sie es mitString(data:encoding:)um.outputFormattingmit.prettyPrintedund.sortedKeyssteuert das Layout.- Arrays, Wörterbücher, verschachtelte Typen, Zahlen, boolesche Werte und Optionals werden alle sinnvoll kodiert.
- Ein konfigurierter Encoder kann für viele Werte wiederverwendet werden.
Lerne Swift mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 122
- Lektionen
- 409
Häufig gestellte Fragen
Ist die Lektion „Encodieren mit JSONEncoder“ kostenlos?
Ja — der vollständige Text von „Encodieren mit JSONEncoder“ 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 „Encodieren mit JSONEncoder“?
Erzeugen Sie JSON-Daten aus Swift-Werten. 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 „Encodieren mit JSONEncoder“?
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
- Codable-Konformität
- Encodieren mit JSONEncoder
- Decodieren mit JSONDecoder
- Optionale und verschachtelte Typen verarbeiten