json - 在此上下文中,“D”对于类型查找不明确

标签 json swift

我在使用 Xcode 10 的 Swift 4.2 中遇到以下问题

enter image description here

我正在创建所有模型类。 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
}

关于json - 在此上下文中,“D”对于类型查找不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53065941/

相关文章:

ios - 调整 UITableView 高度(嵌入在 UIScrollView 中)

json - "More user input please?"的 HTTP 状态代码

android - 在 RetroFit 中处理来自同一端点的不同 JSON 响应类型

Xcode 导航栏位于 ScrollView 下方?

ios - 快速搜索栏 Controller 与 TableView

SAP Leonardo API 的 Swift 4.2 代码等效项

ios - Firebase observeSingleEvent 保留在内存中

c++ - 使用 boost/property_tree 从具有多个元素/数组/子数组 C++ 的 json 文件中获取值

javascript - JSON回调问题

json - 使用 guard 语句从 json 解包到 AnyObject