176得票8回答
在Swift 4中,使用JSONDecoder时,缺失的键是否可以使用默认值而不是必须是可选属性?

Swift 4新增了新的Codable协议。当我使用JSONDecoder时,它似乎要求我的Codable类的所有非可选属性在JSON中都有对应的键,否则会抛出错误。 将我的类的每个属性都变为可选的看起来像是一件不必要的麻烦,因为我真正想要的是使用JSON中的值或默认值。(我不想让属性为空。...

173得票16回答
如何在Swift中使用可解码协议(decodable protocol)解码一个类型为JSON字典的属性?[45]

假设我有一个Customer数据类型,其中包含一个metadata属性,可以在客户对象中包含任何JSON字典struct Customer { let id: String let email: String let metadata: [String: Any] } { ...

172得票7回答
如何从Swift Codable中排除属性?

Swift 4发布的Encodable/Decodable协议使得JSON序列化和反序列化变得非常愉悦。然而,我尚未找到一种方法来精细地控制哪些属性应该进行编码,哪些属性应该进行解码。 我注意到,在相应的CodingKeys枚举中排除属性会完全排除该属性,但是否有更精细的控制方式呢?

171得票15回答
如何使用Swift的Codable将数据编码为字典?

我有一个实现了Swift 4的Codable协议的结构体。是否有一种简单的内置方法将该结构体编码为字典? let struct = Foo(a: 1, b: 2) let dict = something(struct) // now dict is ["a": 1, "b": 2]

169得票16回答
Swift中,如果单个元素解码失败,则JSONDecode解码数组也会失败。

在使用Swift4和Codable协议时,我遇到了以下问题 - 看起来似乎没有办法让JSONDecoder跳过数组中的元素。 例如,我有以下JSON:[ { "name": "Banana", "points": 200, "descri...

146得票4回答
如何在Swift 4的Decodable协议中使用自定义键?

Swift 4引入了原生JSON编码和解码支持,通过Decodable协议实现。如何在此过程中使用自定义键? 例如,假设我有一个结构体struct Address:Codable { var street:String var zip:String var city:...

132得票8回答
如何使用Swift Decodable协议解码嵌套的JSON结构?

这是我的 JSON{ "id": 1, "user": { "user_name": "Tester", "real_info": { "full_name":"Jon Doe" } }, ...

109得票12回答
可编码类不符合解码协议的要求。

我为什么会收到一个“类型'Bookmark'不符合协议'Decodable'”的错误消息?class Bookmark: Codable { weak var publication: Publication? var indexPath: [Int] var locatio...

103得票7回答
使用Swift 4中的Decodable和继承

如果使用类继承会破坏类的可解性。例如,以下代码:class Server : Codable { var id : Int? } class Development : Server { var name : String? var userId : Int? } ...

95得票6回答
使用JSONEncoder将nil值编码为null

我正在使用 Swift 4 的 JSONEncoder。我有一个带有可选属性的 Codable 结构体,并且当值为 nil 时,我希望该属性在生成的 JSON 数据中显示为 null 值。然而,JSONEncoder 会丢弃该属性并且不会将其添加到 JSON 输出中。是否有一种方法可以配置 J...