У меня проблема с декодированием JSON. У меня есть UpdateNickname и UpdateNicknameMessage структуры и переменная Сообщение внутри UpdateNickname может быть нулевым. Я получаю сообщение об ошибке, когда оно пустое. Я хочу справиться с этой проблемой. Вот моя структура:
struct UpdateNicknameMessage: Codable {
let id: Int
let nickname: String
let email: String
}
struct UpdateNickname: Codable {
var Status: Int
var Result: String
var Message: UpdateNicknameMessage
enum CodingKeys: String, CodingKey {
case Status = "Status"
case Result = "Result"
case Message = "Message"
}
init?(from jsonObject: AnyObject) {
guard let Status1: Int = jsonObject.object(forKey: "Status") as? Int,
let Result1: String = jsonObject.object(forKey: "Result") as? String,
let Message1: UpdateNicknameMessage = jsonObject.object(forKey: "Message") as? UpdateNicknameMessage
else { return nil }
Status = Status1
Result = Result1
Message = Message1
}
}
и JSON выглядит так:
{"Message": {
email = "123@123.com";
id = 56;
nickname = testNickname;
},
"Status": 200,
"Result": success}
И это мой код для декодирования JSON в swift. Я использую try catch для обработки моей ошибки.
let decoder = JSONDecoder()
do {
let model = try decoder.decode(UpdateNickname.self, from: data)
let serverStatus = model.Status
if serverStatus == 200 {
//EVERYTHING IS FINE
} else {
//server not working
}
} catch {
//cant convert JSON into struct
print(error.localizedDescription)
}
поэтому моя переменная Сообщение может вернуть ноль, если с сервером что-то пойдет не так.
{"Message": null,
"Status": 400,
"Result": problem}
Когда я пытаюсь декодировать JSON, когда Сообщение равно нулю, я получаю ошибку
Данные не могут быть прочитаны, поскольку они отсутствуют.
Как я могу исправить эту проблему и обработать нулевое значение?