Verwendung von Swifts Codable Super Personal Memo

SwiftyJson ist praktisch, aber Codable, eine Standardfunktion der Swift-Tabelle, war auch einfach zu verwenden

Ein Beispiel für die Konvertierung von json in eine Instanz mit dem einfachsten Codable, was nicht praktikabel ist

Lassen Sie struct Codable erben, konvertieren Sie json in Daten und verwenden Sie dann JSONDecoder.decode. Die in Codable definierten Typinformationen und die Form von json müssen jedoch exakt identisch sein. Wenn daher auch nur ein JSON-Schlüssel fehlt, tritt ein Fehler auf.


var data = """
{
  "name": "Bob",
  "age": 20,
  "sex": "male",
}
""".data(using: .utf8)!

struct User: Codable {
  let name: String
  let age: Int
}

let users: User = try JSONDecoder().decode(User.self, from: data)
users // User(name: 1, age: 20)

Praktische Verwendung von Codable (wenn der JSON-Schlüssel fehlt)

Ändern Sie die Strukturklasse wie folgt und initialisieren Sie sie in der Init-Funktion. In reiner Schnelligkeit geschrieben, ist es leicht zu verstehen.

var data = """
{
  "name": "Bob",
  "age": 20,
}
""".data(using: .utf8)!

class User: Codable {
  var name: String
  var age: Int
  var sex: String? //Sex ist nicht in json!

    required init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        self.name = try container.decodeIfPresent(String.self, forKey: .name) ?? nil
        self.age = try container.decodeIfPresent(Int.self, forKey: .age) ?? nil
        self.sex = try container.decodeIfPresent(String.self, forKey: .sex) ?? nil
    }
}
let users: User = try JSONDecoder().decode(User.self, from: data)
users // User(name: "Bob", age: 20, sex: nil)

Zusammenfassung

Codable ist im Vergleich zu Swifty Json nicht schlecht.

Recommended Posts

Verwendung von Swifts Codable Super Personal Memo
Verwendung des Arrays (persönliches Memorandum)
Verwendung von Map
Wie benutzt man rbenv?
Verwendung mit_option
Verwendung von fields_for
Verwendung von java.util.logging
Verwendung der Karte
Verwendung von collection_select
Beachten Sie, wie Sie Swift Super Basic TableView verwenden
Wie benutzt man Twitter4J
Wie benutzt man active_hash! !!
Verwendung von MapStruct
Verwendung von TreeSet
[Verwendung des Etiketts]
Wie man Identität benutzt
Wie man Hash benutzt
Verwendung von Dozer.mapper
Wie benutzt man Gradle?
[Für Super-Anfänger] Verwendung des Autofokus: true
Verwendung von org.immutables
Verwendung von java.util.stream.Collector
Verwendung von VisualVM
Verwendung von Map
Verstehen Sie, wie Sie den JSON-Decoder von Swift in 3 Minuten verwenden
Wie man GitHub für Super-Anfänger benutzt (Teamentwicklung)
Verwendung der Ketten-API
[Java] Verwendung von Map
Verwendung der Warteschlange mit Priorität
[Rails] Verwendung von Enum
Verwendung von Java Optional
Verwendung von JUnit (Anfänger)
Verwendung von Ruby return
[Rails] Verwendung von Enum
Verwendung von @Builder (Lombok)
Verwendung der Java-Klasse
Wie man Big Decimal benutzt
[Java] Verwendung von removeAll ()
Verwendung von String [] args
Verwendung von Rails Join
Verwendung von Java Map
Ruby: Wie man Cookies benutzt
Verwendung von abhängigen :: zerstören
Verwendung von Eclipse Debug_Shell
Verwendung von Apache POI
[Rails] Verwendung der Validierung
Verwendung von Java-Variablen
[Rails] So verwenden Sie authenticate_user!
Verwendung von GC Viewer
Wie man Lombok jetzt benutzt
[Erstellen] Verwendung von JUnit