【发布时间】:2021-02-08 07:58:46
【问题描述】:
这是手头的 json。我能够解析除“clientDetails”字典之外的所有数据。这是我的代码。我只是不确定如何映射“clientDetails”字典。我应该采取完全不同的方法吗?还是我在正确的轨道上..
{
"data": {
"userID": "124",
"techID": "1233",
"clientID": "1",
"Name": "Haibert",
"lastName": "Chiem",
"emailAddress": "haibert@simplygood.com",
"additionalCompanies": "",
"clientDetails": {
"clientID": "1",
"FirstName": "Sam",
"LastName": "Ka",
"email": "rem@simplygood.com",
"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": "sam@simplygood.com",
"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)
}
}
}
}
【问题讨论】:
标签: ios swift5 xcode11 xcode12