使用swift4的Codable协议,有很多级别的引擎日期和数据转换策略.
鉴于JSON:
{
"name": "Bob",
"age": 25,
"tax_rate": "4.25"
}
Run Code Online (Sandbox Code Playgroud)
我想将它强制进入以下结构
struct ExampleJson: Decodable {
var name: String
var age: Int
var taxRate: Float
enum CodingKeys: String, CodingKey {
case name, age
case taxRate = "tax_rate"
}
}
Run Code Online (Sandbox Code Playgroud)
日期解码策略可以将基于字符串的日期转换为日期.
基于String的Float是否有某种功能
否则我一直坚持使用CodingKey引入一个String并使用计算得到:
enum CodingKeys: String, CodingKey {
case name, age
case sTaxRate = "tax_rate"
}
var sTaxRate: String
var taxRate: Float { return Float(sTaxRate) ?? 0.0 }
Run Code Online (Sandbox Code Playgroud)
这种方式比我看起来需要更多的维护.
这是最简单的方式还是类似于DateDecodingStrategy用于其他类型的转换?
更新:我应该注意:我也走了超越的路线
init(from decoder:Decoder)
Run Code Online (Sandbox Code Playgroud)
但这是相反的方向,因为它迫使我为自己做这一切.