例如,我的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/

10-11 05:32