例如,我的JSON如下所示:
{
createdAt = "2018-06-13T12:38:22.987Z"
}
我的结构看起来像这样:
struct myStruct {
let createdAt: Date
}
像这样解码:
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
当我解码时出现此错误:
解码失败,dataCorrupted(Swift.DecodingError.Context(codingPath:
[CodingKeys(stringValue:“results”,intValue:nil),_JSONKey(stringValue:
“索引0”,intValue:0),CodingKeys(字符串值:“createdAt”,intValue:
nil)],debugDescription:“期望的日期字符串为ISO8601格式。”,
底层的错误:无)
据我了解,该字符串应为ISO8601格式,不是吗?
最佳答案
标准ISO8601日期格式不包含小数秒,因此您需要对日期解码策略使用自定义日期格式器。
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .formatted(dateFormatter)
关于ios - 使用Swift错误解码日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50847139/