У меня проблемы с декодированием банковской информации из ответа JSON API.
Вот соответствующие части моих структур данных.Я создал объект TransactionResponse, чтобы упростить извлечение соответствующих данных из ответа:
struct Transaction: Decodable {
... // other properties, not relevant to this
let isFutureDated: Float? /\
... // see above ___________/
}
struct TransactionResponse: Decodable {
let response: Response?
struct Response: Decodable {
...
let transactions: [Transaction]?
}
}
И мое преобразование из объекта данных JSON:
do {
let transactions = try JSONDecoder().decode(TransactionResponse.self, from: data)
} catch let localError {
print(localError)
}
Если я закомментирую isFutureDated свойство, объект загружается просто отлично (есть еще около дюжины других свойств, поэтому дело не только в том, что он ничего не загружает: P).Когда я включаю свойство isFutureDated в структуру данных, я улавливаю следующую ошибку:
typeMismatch (Swift.String, Swift.DecodingError.Context (codingPath: [CodingKeys (stringValue): "response", intValue: nil), CodingKeys (stringValue: "транзакции", intValue: nil), _JSONKey (stringValue: "Index 0", intValue: 0), CodingKeys (stringValue: "isFutureDated", intValue: nil)], debugDescription: "Предполагается декодировать Float, но вместо этого найдено число." , underError: nil))
Я что-то упустил?Float не число?Я также попытался изменить тип для isFutureDated на Double, Int, Int8, Int16, Int 32, Int64, UInt, UInt8 ... Вы понимаете.Даже данные и строки.Всегда одна и та же ошибка: замена части Float на тип, на который она рассчитывает.
Последнее замечание, фактическое поле JSON из объекта ответа выглядит следующим образом:
isFutureDated = 0;
Это поле не будет использоваться в этом конкретном приложении, но если эта проблемапроизойдет снова, я хотел бы найти решение, прежде чем оно будет иметь значение.