Swift 5我们如何解析嵌套在一个Dictionary中,另一个嵌套在Dictionary中的Dictionary?

问题描述

这是手头的json。我能够解析除“ clientDetails”字典之外的所有数据。这是我的代码。我只是不确定如何映射“ clientDetails”字典。我应该采取一种完全不同的方法吗?还是我在正确的轨道上?。

{
  "data": {
    "userID": "124","techID": "1233","clientID": "1","Name": "Haibert","lastName": "Chiem","emailAddress": "[email protected]","additionalCompanies": "","clientDetails": {
      "clientID": "1","FirstName": "Sam","LastName": "Ka","email": "[email protected]","CustomerName": "SimplyRem","BusinessAddress": "9863 N. Glenoaks Blvd,Ste. 207F","BusinessCity": "Burbank","BusinessState": "","BusinessZip": "91502","BusinessCountry": "USA","BusinessPhone": "(818)457-9507","BusinessFax": null,"MobilePhone": "818-378-9507","ContactName": "Samuel Kaz","ContactTitle": "Owner","ContactPhone": "818-624-9507","ContactEmail": "[email protected]","lastUpdated": "2020-10-24 15:09:17"
    }
  }
}

struct UserInformation: Decodable {
    var userID: String = ""
    var clientID: String = ""
    var Name: String = ""
    var lastName: String = ""
    var emailAddress: String = ""
    var techID: String = ""
    var additionalCompanies: String = ""
    
    private enum DataKeys: String,CodingKey {
        case userID = "userID"
        case clientID = "clientID"
        case Name = "Name"
        case lastName = "lastName"
        case emailAddress = "emailAddress"
        case techID = "techID"
        case additionalCompanies = "additionalCompanies"
    }
    
    private enum DataResponseKeys: String,CodingKey {
        case data
    }
    
    init(from decoder: Decoder) throws {
        if let dataResponseContainer = try? decoder.container(keyedBy: DataResponseKeys.self) {
            if let dataContainer = try? dataResponseContainer.nestedContainer(keyedBy: DataKeys.self,forKey: .data) {
                self.userID = try dataContainer.decode(String.self,forKey: .userID)
                self.clientID = try dataContainer.decode(String.self,forKey: .clientID)
                self.Name = try dataContainer.decode(String.self,forKey: .Name)
                self.lastName = try dataContainer.decode(String.self,forKey: .lastName)
                self.emailAddress = try dataContainer.decode(String.self,forKey: .emailAddress)
                self.techID = try dataContainer.decode(String.self,forKey: .techID)
                self.additionalCompanies = try dataContainer.decode(String.self,forKey: .additionalCompanies)
            }
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)