字母数字 ID 未映射但给出 Nil 输出

Alphanumeric ID not mapping but gives Nil output

所以,我在从我的 json 数据中正确映射我的 ID 属性时遇到了问题。我不太确定我错过了什么,因为我能够成功映射也具有相似数据的相似属性。

这是我创建的模型:

import Foundation
import ObjectMapper

enum ItemsModelEnum: String {

    case kind = "kind"
    case etag = "etag"
    case id = "id"

}

struct ItemsModel: Mappable {

    var kind: String!
    var etag: String!
    var id: String!


    init?(map: Map) {

    }

    init(kind: String, etag: String, id: String) {
        self.kind = kind
        self.etag = etag
        self.id = id
    }

    init() {
        self.kind = ""
        self.etag = ""
        self.id = ""

    }

    mutating func mapping(map: Map) {

        kind <- map[ItemsModelEnum.kind.rawValue]
        etag <- map[ItemsModelEnum.etag.rawValue]
        id <- map[ItemsModelEnum.id.rawValue]
    }

}

这是我使用的映射代码:

do {
    if let data = data,
        let videoData =  Mapper<ItemsModel>().map(JSONObject: try JSONSerialization.jsonObject(with: data, options: [])) {

            completionHandler(videoData,(response as! HTTPURLResponse), error)
            print("videoData Received Successfully")
        }
} catch {
    completionHandler(nil,(response as! HTTPURLResponse), error)
    print("Error parsing json get video data: ", error.localizedDescription)
}

以下是我要映射的json数据:

{
    "kind": "youtube#playlistItemListResponse",
    "etag": "\"xxxxxxxxxxxxx"",
    "pageInfo": {
        "totalResults": 4,
        "resultsPerPage": 10
    },
    "items": [
        {
            "kind": "youtube#playlistItem",
            "etag": "\"xxxxxx"",
            "id": "xxxxxx",

        }
}

有趣的是,etag 属性已成功映射,但 id 属性却未成功映射,因为当我收到响应时它返回 nil。

知道可能是什么原因吗?

在我的 Xcode 中,当我打印我的对象时,我得到以下输出:

videoData的打印说明:

▿ ItemsModel
  ▿ kind : Optional<String>
    - some : "youtube#playlistItemListResponse"
  ▿ etag : Optional<String>
    - some : "\"Xxxxxxxxx""
  - id : nil

您尝试获得 id,但那里有 pageInfoitems。您需要更深入地了解路径 ["items"][0]["id"]

您尝试直接从对象获取id,但您需要的对象位于更深的位置。

您需要为 main object、具有键 "pageInfo" 的对象、具有键 "items".

的对象创建 3 个结构