У меня возникла проблема с разбором JSON в Swift 4.2. Вот следующий код, который показал ошибку времени выполнения.
Мои данные Json следующие, которые я получил с сервера.
{
code: 406,
message: "Email Address already Exist.",
status: 0
}
Я использую Codable для создания своей структуры следующим образом
struct Registration: Codable {
var code: Int
var status: Int
private enum CodinggKeys: String, CodingKey {
case code
case status
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
do {
self.code = Int(try container.decode(String.self, forKey: .code))!
} catch DecodingError.typeMismatch {
let value = try container.decode(Double.self, forKey: .code)
self.code = Int(value);
}
do {
self.status = try container.decode(Int.self, forKey: .status)
} catch DecodingError.typeMismatch {
let value = try container.decode(String.self, forKey: .status)
self.status = Int(value);
}
}
}
Но каждый раз я получал ошибку при синтаксическом анализе ключа status.
Примечание. Я пытался анализировать статус в String, Int, Double, Decimal, NSInterger, но ни один из них не работает. каждый раз, когда я получаю ту же ошибку. Ожидалось декодирование UInt, но вместо этого было найдено число.
CodingKey
.CodinggKeys
вместоCodingKeys
. может в этом проблема? возможно, он берет другое перечисление из вашего проекта вместо того, которое вы только что объявили - person Catalina T.   schedule 27.10.2018init(from:)
.Codable
может справиться с этим автоматически. - person PGDev   schedule 29.10.2018