用于解析 JSON 并返回字典数组的 Swift 函数
Posted
技术标签:
【中文标题】用于解析 JSON 并返回字典数组的 Swift 函数【英文标题】:Swift Function to parse JSON and return a array of dictionaries 【发布时间】:2016-07-31 11:05:48 【问题描述】:我尝试编写一个函数来解析 JSON。该函数的返回值是字典的array
。不幸的是,我的问题是分配result = data as! [[String:AnyObject]]
不起作用。 print(data)
返回我的 JSON 精彩,但 print(result)
只返回一个空数组。令人惊讶的是方法print(result)
先运行然后方法print(data)
运行。
我尝试过的代码:
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
【问题讨论】:
【参考方案1】:API 调用以 async
(在后台)方式工作,这就是为什么您需要使用 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)
【讨论】:
以上是关于用于解析 JSON 并返回字典数组的 Swift 函数的主要内容,如果未能解决你的问题,请参考以下文章