我正在用 Swift 的 Codable 替换旧的 JSON 解析代码,遇到了一点麻烦。我想这与其说是 Codable 问题,不如说是 DateFormatter 问题。从结构开始
我正在用 Swift 的 Codable 替换旧的 JSON 解析代码,但遇到了一些问题。我想这与其说是 Codable 的问题,不如说是 DateFormatter 的问题。
从结构体开始
struct JustADate: Codable {
var date: Date
}
和一个 json 字符串
let json = """
{ "date": "2017-06-19T18:43:19Z" }
"""
现在让我们解码
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
let data = json.data(using: .utf8)!
let justADate = try! decoder.decode(JustADate.self, from: data) //all good
但是如果我们将日期更改为具有秒的小数部分,例如:
let json = """
{ "date": "2017-06-19T18:43:19.532Z" }
"""
现在它坏了。日期有时会返回小数秒,有时则不会。我以前解决这个问题的方法是在我的映射代码中,我有一个转换函数,它尝试了带小数秒和不带小数秒的 dateFormats。不过,我不太确定如何使用 Codable 来解决这个问题。有什么建议吗?