我在 JSON 解码方面遇到问题。我有 UpdateNickname 和 UpdateNicknameMessage 结构,UpdateNickname 中的变量 Message 可能为空。每当它为 null 时,我都会收到错误消息。我想处理这个问题。这是我的结构:
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 的代码。我使用 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。
{"Message": null,
"Status": 400,
"Result": problem}
当我在 Message 为 null 时尝试解码 JSON 时出现错误
The data couldn’t be read because it is missing.
我该如何解决这个问题并处理空值?
最佳答案
改变这一行:
var Message: UpdateNicknameMessage
这个:
var Message: UpdateNicknameMessage?
现在一切正常。
关于json - 如何在 SWIFT 中处理 JSON 中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56379010/