json - 在这种情况下,“D”对于类型查找不明确
问题描述
我在带有 Xcode 10 的 Swift 4.2 中面临以下问题
我正在创建所有模型类。API 响应包含这种类型的 JSON 对象:
{
"d":{
"results":[
{
"__metadata":{
"id":"urls"
}
}
]
}
}
如何创建具有相同名称而没有歧义的类?
这是我的类实现:
import Foundation
import Alamofire
class SearchPINModel: Codable {
let d: D?
init(d: D?) {
self.d = d
}
}
class D: Codable {
let results: [Result]?
init(results: [Result]?) {
self.results = results
}
}
class Result: Codable {
let metadata: Metadata?
let sapID, deviceID, mobileNo, employeeName: String?
let pincode, sapUser, deviceCode: String?
enum CodingKeys: String, CodingKey {
case metadata = "__metadata"
case sapID = "SapId"
case deviceID = "DeviceId"
case mobileNo = "MobileNo"
case employeeName = "EmployeeName"
case pincode = "Pincode"
case sapUser = "SapUser"
case deviceCode = "DeviceCode"
}
init(metadata: Metadata?, sapID: String?, deviceID: String?, mobileNo: String?, employeeName: String?, pincode: String?, sapUser: String?, deviceCode: String?) {
self.metadata = metadata
self.sapID = sapID
self.deviceID = deviceID
self.mobileNo = mobileNo
self.employeeName = employeeName
self.pincode = pincode
self.sapUser = sapUser
self.deviceCode = deviceCode
}
}
class Metadata: Codable {
let id, uri: String?
let type: String?
init(id: String?, uri: String?, type: String?) {
self.id = id
self.uri = uri
self.type = type
}
}
解决方案
你可以试试
struct Root: Codable {
let d: D
}
struct D: Codable {
let results: [Result]
}
struct Result: Codable {
let metadata: Metadata
enum CodingKeys: String, CodingKey {
case metadata = "__metadata"
}
}
struct Metadata: Codable {
let id: String
}
推荐阅读
- python - 创建嵌套字典(使用 for 循环?)
- python - 在 Django 中批量创建自动字段
- azureml - 在 AzureML 设计器中运行管道时出错
- python - AttributeError: 'datetime.timedelta' 对象没有属性 'split'
- reactjs - 如何使用钩子更新状态对象中的特定值?
- python-3.x - 使输出字典看起来更好
- css - 简化表格列宽控制的 CSS
- sql - Oracle SQL 随机化列条目
- amazon-web-services - 由于安全组不正确,AWS 应用程序负载均衡器运行状况检查对 ECS 实例失败
- java - 如何在不创建或附加 Azure Java SDK 的情况下获取 AppendBlobItem