Was dieses Werkzeug tut
Aus einer JSON-Probe werden Swift-Structs, die Codable erfüllen.
{ "id": 1, "firstName": "Ada", "address": { "city": "Paris" } }
struct Root: Codable {
let id: Int
let firstName: String
let address: Address
}
struct Address: Codable {
let city: String
}
JSONDecoder liest das direkt. Jedes verschachtelte Objekt bekommt sein Struct; ein Array von Objekten an der Wurzel bekommt einen typealias, damit auch die Liste einen Namen hat.
CodingKeys dort, wo der Name sich ändern musste
Ein Eigenschaftsname trägt keinen Bindestrich, beginnt nicht mit einer Ziffer, und ein Schlüsselwort braucht Backticks. Wenn ein Schlüssel so kein Name sein kann, wird die Zuordnung ausgeschrieben:
struct Root: Codable {
let contentType: String
let `class`: Int
let f2fa: Bool
enum CodingKeys: String, CodingKey {
case contentType = "content-type"
case `class`
case f2fa = "2fa"
}
}
Beachten Sie: `class` behält seinen Schlüssel ohne Zuordnung — Backticks ändern, wie Swift den Namen liest, nicht den Namen selbst. Das Enum führt jeden Fall auf, sobald es existiert, denn ein unvollständiges CodingKeys ließe die ausgelassenen Eigenschaften stillschweigend fallen.
JSONValue, und warum es da ist
Ein null, ein leeres Array oder ein gemischtes Array lassen nichts zu erschließen. Swift hat keinen fertigen „beliebigen JSON-Wert“, der dekodiert und kodiert, also erscheint einmal am Ende ein kleines Enum:
let nickname: JSONValue?
let tags: [JSONValue]
Es deckt die sechs Dinge ab, die JSON tragen kann, und sonst nichts. Wissen Sie später, dass das Feld eine nullbare Zeichenkette ist, ersetzt String? es, und das Enum darf gehen.
Was eine Probe nicht sagen kann
Nur ein null erzeugt ein Optional. Alles andere ist nicht optional, weil das Dokument einen Wert hatte — ein später ergänztes ? ist ein Zeichen, ein überflüssiges verbirgt ein fehlendes Feld, bis es zählt.
Int und Double kommen aus der Schreibweise der Zahl, nicht aus ihrem Wert: 3 ergibt Int, 3.0 ergibt Double. Der Unterschied zählt in Swift, wo 3.5 in ein Int zu dekodieren wirft, statt zu runden.
Datenschutz ab Werk
Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.