В Swift у меня есть следующий код ...
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
let articles = try decoder.decode(Articles.self, from: data)
class Article: Codable {
init(_ PartitionKey : String?, RowKey : String?, PublishedDateGmt:Date?, Title:String?) {
self.PartitionKey = PartitionKey
self.RowKey = RowKey
self.PublishedDateGmt = PublishedDateGmt
self.Title = Title
}
enum CodingKeys: String, CodingKey {
// include only those that you want to decode/encode
case PartitionKey
case PublishedDateGmt
case Title
case RowKey
}
let RowKey: String?
let PartitionKey: String?
let PublishedDateGmt: Date?
let Title: String?
}
И это пример JSON.
{
"PartitionKey": “test1”,
"RowKey": “123”,
"PublishedDateGmt": "2019-06-29T17:27:46Z",
"Title": “Test Title”
}
Все, кроме ОпубликованоDateGmt, сериализуется. Я не получаю никаких ошибок при сериализации, за исключением того, что это дает мне ноль.
Я даже попробовал код ниже, но преобразование даты не удается. (В приведенных ниже примерах я получаю ошибки преобразования, а не nil, являющийся конечным результатом свойства в объекте Article).
// let dateFormatter = DateFormatter()
//dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'"//2019-06-29T17:27:46Z
//decoder.dateDecodingStrategy = .formatted(dateFormatter)
Все сериализуется правильно, за исключением поля даты ОпубликованныйDateGmt, которое сериализуется как nil.
Пример даты здесь из возвращенных данных json: 2019-06-29T17: 27: 46Z
Это должна быть действительная дата iso8601, верно?
Все остальное правильно конвертируется в объект Article, и ключи кодирования установлены правильно.