SwiftyJson est pratique, mais Codable, qui est une fonction standard de la table Swift, était également facile à utiliser, alors notez
Faites simplement hériter à struct Codable, convertissez json en données, puis utilisez JSONDecoder.decode. Cependant, les informations de type définies dans Codable et la forme de json doivent être exactement les mêmes. Par conséquent, si même une clé json est manquante, une erreur se produit.
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)
Modifiez la classe de struct comme suit et initialisez-la dans la fonction init. Écrit en pure rapidité, il est facile à comprendre.
var data = """
{
"name": "Bob",
"age": 20,
}
""".data(using: .utf8)!
class User: Codable {
var name: String
var age: Int
var sex: String? //le sexe n'est pas en 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)
Codable n'est pas trop mal comparé à Swifty Json.
Recommended Posts