Swift函数解析JSON并返回一个字典数组
问题描述:
我试图编写一个函数来解析JSON。函数的返回值是字典的一个array
。不幸的是,我有问题,分配result = data as! [[String:AnyObject]]
不起作用。 print(data)
返回我的JSON精彩回来,但print(result)
只给了我一个空阵列回来。令人惊讶的是,方法print(result)
先运行,然后运行方法print(data)
。Swift函数解析JSON并返回一个字典数组
代码中,我有尝试:在async
import Foundation
import Alamofire
import SwiftyJSON
func getPlayers() -> Array<Dictionary<String, AnyObject>> {
var result = [[String:AnyObject]]()
Alamofire.request(.GET, "http://example.com/api/v1/players", parameters: ["published": "false"])
.responseJSON { (responseData) -> Void in
if((responseData.result.value) != nil) {
let response = JSON(responseData.result.value!)
if let data = response["data"].arrayObject {
print(data)
result = data as! [[String:AnyObject]]
}
}
}
print(result)
return result
}
答
阿比调用工作(背景)的方式,这就是为什么你需要使用SWIFT的closure
而不是返回dictionary
。更改代码这样
func getPlayers(completion: (Array<Dictionary<String, AnyObject>>) ->())) {
var result = [[String:AnyObject]]()
Alamofire.request(.GET, "http://example.com/api/v1/players", parameters: ["published": "false"])
.responseJSON { (responseData) -> Void in
if((responseData.result.value) != nil) {
let response = JSON(responseData.result.value!)
if let data = response["data"].arrayObject {
print(data)
result = data as! [[String:AnyObject]]
}
}
completion(result)
}
}
而且这样调用
self.getPlayers() { (result) ->() in
print(result)
}
编码愉快:) –