使用 Alamofire + SwiftyJSON 获取 JSON 数组

Posted

技术标签:

【中文标题】使用 Alamofire + SwiftyJSON 获取 JSON 数组【英文标题】:Getting JSON array with Alamofire + SwiftyJSON 【发布时间】:2015-12-03 20:08:14 【问题描述】:

我真的是 Swift 新手,抱歉,如果这是一个愚蠢的问题......似乎有很多关于这个的问题,但他们都没有使用最新版本的 Alamofire

Alamofire.request(.GET, url)
    .responseJSON  response in

    let json = JSON(response.data!)
    debugPrint(json)
    self.delegate?.didReceiveAPIResults(json)

还有委托的didReceiveAPIResults方法

func didReceiveAPIResults(results: JSON) 
    dispatch_async(dispatch_get_main_queue(), 
        self.tableData = results["items"].arrayObject!
        self.appsTableView!.reloadData()
    )

这是 JSON 响应:


    "items": [
        
            "id": 1,
            "name": "Sample 1"
        ,
        
            "id": 2,
            "name": "Sample 2"
        
    ]

我希望 debugPrint 打印类似于 JSON 的内容,但它只是打印 unknown

如果我自己调试打印response.data,它似乎被编码...

Optional(<7b226461 7461223a 5b7b2269 64223a36 2c226e61 6d6522......

然后我的results["items"].arrayObject! 行有这个错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

【问题讨论】:

【参考方案1】:

与其抢response.data,我建议抢response.result.value。当您执行responseJSON 时,Alamofire 会为您解析 JSON,您应该可以随意抓取这个解析的对象。

Alamofire.request(.GET, url)
    .responseJSON  response in
        if let value = response.result.value 
            let json = JSON(value)
            self.delegate?.didReceiveAPIResults(json)
        

【讨论】:

完美运行,谢谢。现在我在 Alamofire 文档中非常清楚地看到了 response.result.value,我只是以某种方式错过了这一点

以上是关于使用 Alamofire + SwiftyJSON 获取 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Alamofire 发布 SwiftyJSON?

在 Swift 中将 Alamofire 结果解析为对象(使用:Alamofire、SwiftyJSON 和 ObjectMapper)

swift、Alamofire、SwiftyJSON:如何解析 arrayObject

数据未使用 Alamofire + SwiftyJSON 加载到 UITableView

SwiftyJson 和 Alamofire 使用的解码结构

使用 Alamofire + SwiftyJSON 获取 JSON 数组