如何使用Swift4中的Codable转换带有可选小数秒的日期字符串

如何使用Swift4中的Codable转换带有可选小数秒的日期字符串

我正在用Swift的Codable替换旧的JSON解析代码,并且遇到了一些麻烦。我想这不是一个可编码的问题,因为它是一个DateFormatter问题。

从结构开始

 struct JustADate: Codable {
    var date: Date
 }

和一个json字符串

let json = """
  { "date": "2017-06-19T18:43:19Z" }
"""

现在让我们解码

let decoder = JSONDecoder()decoder.dateDecodingStrategy = .iso8601let 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来处理它。有什么建议?


凤凰求蛊
浏览 786回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP