草庐IT

json - 在 SWIFT 4 中解析嵌套的 JSON

我目前正在SWIFT4中使用Decodable解析JSON。JSON格式如下:{"autopayout_from":"1.010","earning_24_hours":"9.74731104","error":false,"immature_earning":0.635593030875,"last_payment_amount":"1.91238210","last_payment_date":"Mon,26Feb201815:08:02GMT","last_share_date":"Mon,26Feb201816:16:01GMT","payout_daily":false,"p

swift - 扩展 Encodable(或 Codable)的协议(protocol)不符合它

我有2个协议(protocol),Filters和Parameters,它们都扩展了EncodableprotocolFilters:Encodable{varpage:Int{get}}protocolParameters:Encodable{vartype:String{get}varfilters:Filters{get}}我创建符合这些协议(protocol)的结构,因此……structBankAccountFilters:Filters{varpage:IntvarisWithdrawal:Bool}structBankAccountParamters:Parameters{

json - 使用 Codable 解码 JSON 时有任何问题吗?

使用Swift3JSONSerialization,如果您的数据模型的一部分是完全动态的,您总是可以将反序列化数据保留在Any并让消费者处理它.使用Swift4的Codable,我想这样做:structFoo:Codable{letbar:Any;}但是我明白了JSONPlayground.playground:4:9:note:cannotautomaticallysynthesize'Decodable'because'Any'doesnotconformto'Decodable'letbar:Any;^如果我可以实现自己的Decodable,那还不算世界末日,但这需要Decode

swift - Codable/Decodable 应该用字符串解码数组

为什么名称数组没有解码?为Playground准备,简单地将其粘贴到您的PlaygroundimportFoundationstructCountry:Decodable{enumCodingKeys:String,CodingKey{casenames}varnames:[String]?}extensionCountry{publicinit(fromdecoder:Decoder)throws{letvalues=trydecoder.container(keyedBy:CodingKeys.self)names=tryvalues.decode([String]?.self,f

swift - 您如何反射(reflect) Codable/Codable Keys 协议(protocol)的设计?

我正在尝试实现类似于Swift如何在实现Codable的类中定义的枚举上使用CodableKeys协议(protocol)集的方式。在我的例子中,类是CommandHandler,枚举是CommandIds,它不需要编译器的代码生成,因为枚举总是被显式指定。这是我所追求的简化版本...protocolCommandId{}protocolCommandHandler{associatedtypeCommandIds:CommandId,RawRepresentable}classHandlerA:CommandHandler{enumCommandIds:String,CommandI

ios - swift 可编码 : How to encode top-level data into nested container

我的应用程序使用返回JSON的服务器,如下所示:{"result":"OK","data":{//CommontoallURLs"user":{"name":"JohnSmith"//ETC...},//DifferentforeachURL"data_for_this_url":0}}如您所见,特定于URL的信息与通用user字典存在于同一字典中。目标:将此JSON解码为类/结构。因为user很常见,所以我希望它位于顶级类/结构中。编码为新格式(例如plist)。我需要保留原始结构。(即从顶级user信息和子对象的信息重新创建data字典)问题:重新编码数据时,我无法将user字典(

Swift - 在解码可选的 Codable 值时,有没有办法区分不存在的字段或为 nil/null 的字段

必要的功能我正在修改系统以将当前未发送的API请求队列保存到UserDefaults,以便在用户连接允许时重新发送。由于某些补丁请求需要能够向API发送实际的NULL值(如果它是nil可选,则不仅仅是忽略该字段),这意味着我需要能够根据默认值对nil/NULL值进行编码和解码对于某些领域。问题我有编码方面的问题,并且可以愉快地编码请求以将NULL字段发送到服务器或将它们编码为默认值。但是,我的问题是,在解码保存的未发送请求时,我无法找到一种方法来区分实际的Nil值和不存在的字段。我目前正在使用decodeIfPresent解码我的字段(这些请求的所有字段都是可选的),如果字段为空或字段

json - 带有动态键的 Swift Codable

我的JSON结构为:"periods":{"2018-06-07":[{"firstName":"Test1","lastName":"Test1"}],"2018-06-06":[{"firstName":"Test1","lastName":"Test1"}]}我试着这样解析它:publicstructSchedule:Codable{publicletperiods:Periods}publicstructPeriods:Codable{publicletunknown:[Inner]publicstructInner:Codable{publicletfirstName:Str

json - 使用 swift Codable 解码以值作为键的 JSON

我在解码JSON结构时遇到问题,我无法更改它以使其更容易解码(它来自firebase)..如何将以下JSON解码为对象?问题是如何转换“7E7-M001”。这是一个有抽屉的容器的名称。抽屉名称也用作键。{"7E7-M001":{"Drawer1":{"101":{"Partnumber":"F101"},"102":{"Partnumber":"F121"}}},"7E7-M002":{"Drawer1":{"201":{"Partnumber":"F201"},"202":{"Partnumber":"F221"}}}}我必须在Container和Drawer类中修复什么才能将键作为

json - 使用 Swift 4 的 Codable 进行类型转换

我正在使用Swift4中的新Codable协议(protocol)。我正在通过URLSession从WebAPI中提取JSON数据。下面是一些示例数据:{"image_id":1,"resolutions":["1920x1200","1920x1080"]}我想将其解码成这样的结构:structResolution:Codable{letx:Intlety:Int}structImage:Codable{letimage_id:Intletresolutions:Array}但我不确定如何将原始数据中的分辨率字符串转换为Resolution结构中单独的Int属性。我读过officia