Questions tagged «codable»

13
如果单元素解码失败,则Swift JSONDecode解码数组也会失败
在使用Swift4和Codable协议时,我遇到了以下问题-似乎没有办法允许JSONDecoder跳过数组中的元素。例如,我具有以下JSON: [ { "name": "Banana", "points": 200, "description": "A banana grown in Ecuador." }, { "name": "Orange" } ] 和一个可编码的结构: struct GroceryProduct: Codable { var name: String var points: Int var description: String? } 解码此json时 let decoder = JSONDecoder() let products = try decoder.decode([GroceryProduct].self, from: json) 结果products为空。这是可以预期的,因为JSON中的第二个对象没有"points"键,而points在GroceryProductstruct中不是可选的。 问题是如何允许JSONDecoder“跳过”无效对象?
116 arrays  json  swift  swift4  codable 

7
使用Swift 4中的JSONDecoder,丢失的键可以使用默认值而不是必须是可选属性吗?
Swift 4添加了新Codable协议。当我使用JSONDecoder它时,它似乎要求类的所有非可选属性Codable在JSON中具有键,否则会引发错误。 使类的每个属性为可选似乎是不必要的麻烦,因为我真正想要的是使用json中的值或默认值。(我不希望该属性为零。) 有没有办法做到这一点? class MyCodable: Codable { var name: String = "Default Appleseed" } func load(input: String) { do { if let data = input.data(using: .utf8) { let result = try JSONDecoder().decode(MyCodable.self, from: data) print("name: \(result.name)") } } catch { print("error: \(error)") // `Error message: "Key not found when …
114 json  swift  swift4  codable 


6
如何从Swift 4的Codable中排除属性
Swift 4的新的Encodable/Decodable协议使JSON(反)序列化变得非常令人愉快。但是,我还没有找到一种方法可以对应该编码的属性和应该解码的属性进行细粒度控制。 我注意到,从随附的CodingKeys枚举中排除该属性会将该属性从流程中完全排除,但是有没有办法进行更细粒度的控制?
104 json  swift  codable 

12
Swift 4可解码协议中如何使用JSON字典类型解码属性
假设我的Customer数据类型包含一个metadata属性,该属性可以在客户对象中包含任何JSON字典 struct Customer { let id: String let email: String let metadata: [String: Any] } { "object": "customer", "id": "4yq6txdpfadhbaqnwp3", "email": "john.doe@example.com", "metadata": { "link_id": "linked-id", "buy_count": 4 } } 该metadata属性可以是任何任意的JSON映射对象。 在我可以从反序列化的JSON强制转换属性(NSJSONDeserialization但使用新的Swift 4 Decodable协议)之前,我仍然想不出一种方法。 有谁知道如何在Swift 4中使用Decodable协议实现这一目标?
103 json  swift  swift4  codable 

4
如何在Swift 4的Decodable协议中使用自定义键?
Swift 4通过该Decodable协议引入了对本机JSON编码和解码的支持。如何为此使用自定义键? 例如,说我有一个结构 struct Address:Codable { var street:String var zip:String var city:String var state:String } 我可以将其编码为JSON。 let address = Address(street: "Apple Bay Street", zip: "94608", city: "Emeryville", state: "California") if let encoded = try? encoder.encode(address) { if let json = String(data: encoded, encoding: .utf8) { // Print JSON String print(json) …
102 json  swift  swift4  codable 

6
如何使用Swift Decodable协议解码嵌套的JSON结构?
这是我的JSON { "id": 1, "user": { "user_name": "Tester", "real_info": { "full_name":"Jon Doe" } }, "reviews_count": [ { "count": 4 } ] } 这是我希望将其保存到的结构(不完整) struct ServerResponse: Decodable { var id: String var username: String var fullName: String var reviewCount: Int enum CodingKeys: String, CodingKey { case id, // How do i …
90 json  swift  swift4  codable 

7
在带有继承的Swift 4中使用Decodable
使用类继承是否会破坏类的可解码性。例如下面的代码 class Server : Codable { var id : Int? } class Development : Server { var name : String? var userId : Int? } var json = "{\"id\" : 1,\"name\" : \"Large Building Development\"}" let jsonDecoder = JSONDecoder() let item = try jsonDecoder.decode(Development.self, from:json.data(using: .utf8)!) as Development print(item.id ?? …
72 swift  swift4  codable 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.