Swift Academy · Lektion

Encodieren mit JSONEncoder

Erzeugen Sie JSON-Daten aus Swift-Werten.

Lektion 2 von 413 Schritte

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(_:) gibt Data zurück; wandeln Sie es mit String(data:encoding:) um.
  • outputFormatting mit .prettyPrinted und .sortedKeys steuert 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.
Kostenlos starten

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

  1. Codable-Konformität
  2. Encodieren mit JSONEncoder
  3. Decodieren mit JSONDecoder
  4. Optionale und verschachtelte Typen verarbeiten
← Zurück zu Swift Academy