Swift 4-在解析JSON时与ObjectMapper发行



我的代码在Swift 4之前正常工作,我只是在解析一个简单的JSON文件,而我将所有内容映射到我的模型类中。

这是我的示例代码:

首先,我得到了JSON文件。

if let path = Bundle.main.path(forResource: "myFile", ofType: "json") { }

然后我可以解析。

do {
       let jsonData = try Data(contentsOf: URL(fileURLWithPath: path), options: NSData.ReadingOptions.mappedIfSafe)
       let json = JSON(data: jsonData)
       if let jsonZones = json["zones"].array {
          let parsedZones = Mapper<Zone>().mapArray(JSONObject: jsonZones.description)
          parsedZones?.forEach({ (element) -> Void in
              // Do stuff...
          })
 }

现在我可以向您展示我的区域类

class Zone: Object, Mappable {
    @objc dynamic var code: String?
    required convenience init?(map: Map) {
        self.init()
        mapping(map: map)
    }
    func mapping(map: Map) {
        code <- map["code"]
    }

您还需要我的JSON文件:

{
    "info": {
        ....
        ....
    },
    "zones": [{
        "code": "EN"
    }],
}

我崩溃了,因为帕塞德郡是零。我知道我可以检查NIL,但它正在使用Swift 3,在转换为Swift 4之前,我什么也没修改。关于我的JSON文件,不应该是零。

我可以得到一些帮助吗?

您必须这样使用:

if let jsonZones = json["zones"].arrayObject {
    let parsedZones = Mapper<Zone>().mapArray(JSONObject: jsonZones)
    parsedZones?.forEach({ (element) -> Void in
        print(element.code)
    })
}

相关内容

  • 没有找到相关文章

最新更新