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

问题描述 投票:0回答:1

所以,我有问题从我的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": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/b8GuhpTu3jI8LxmNA8qvlToNlPw\"",
    "pageInfo": {
        "totalResults": 4,
        "resultsPerPage": 10
    },
    "items": [
        {
            "kind": "youtube#playlistItem",
            "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/kB3sYP4gnQpTay_xsLPdd60nCjI\"",
            "id": "UExDQWlfRXlJcWtfdTJyaG1aS0Jhdzk0NmNmVXhENHg5NS41NkI0NEY2RDEwNTU3Q0M2",

        }
}

有趣的是etag属性被成功映射但不是id属性,因为当我得到响应时它给了我nil。

知道可能是什么原因?

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

打印videoData的说明:

▿ ItemsModel
  ▿ kind : Optional<String>
    - some : "youtube#playlistItemListResponse"
  ▿ etag : Optional<String>
    - some : "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/qgaG7pUX51uAQMMOBOI0NggOfXM\""
  - id : nil
json swift objectmapper
1个回答
0
投票

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

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

你需要为main object创建3个结构,对于具有键"pageInfo"的对象,为具有键"items"的对象创建。

© www.soinside.com 2019 - 2024. All rights reserved.