我们定义一个 time 类型为 Date
例如:
struct SessionTime: Codable {
let sessionStartTime: Date?
let sessionEndTime: Date?
let newSessionStartTime: Date?
let newSessionEndTime: Date?
}
并且在解析的时候,后端返回我们的都是 ISO8601 类型,这个时候,我们只需要定义一下 decoder 一下就可以:
lazy var jsonDecoder: JSONDecoder = {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
decoder.dateDecodingStrategy = .iso8601
return decoder
}()
然而,这些Date有可能偶尔没有值,这个之后如果后端返回给我们 “”的话,用 jsonDecoder 解析时就会报错:Expected date string to be ISO8601-formatted
后端返回:
"session_start_time" : "2019-12-03T16:00:00+00:00",
"session_end_time" : "2019-12-03T17:00:00+00:00",
"new_session_start_time": "",
"new_session_end_time" : "",
解决办法: