json - 如何在 SWIFT 中处理 JSON 中的空值

标签 json swift

我在 JSON 解码方面遇到问题。我有 UpdateNicknameUpdateNicknameMessage 结构,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/

相关文章:

ios - 添加SCNPhysicsBallSocketJoint时SceneKit崩溃

string - 如何在 Swift 中创建子字符串?

java - 如何修复流关闭异常

c# - 从数据库中获取数据并构建一个用于 JSON 的字符串

json - Elasticsearch查询性能(如果有多个字段还是只有一个字段)?

Swift - 在带有 NSURLRequest 的 REST api 搜索中使用小于 "<"运算符

当 UISearchController 处于事件状态时,iOS 9 searchBar 从表标题 View 中消失

ios - 推送通知在 IOS 11 中不起作用

javascript - 如何从 JSON 响应重定向?

json - 使用 Core Data 一对多关系从 JSON 数组填充 sqlite 数据库