我的目标是在此JSON data上获得最顶部的“ browser_download_url”字段,以便我可以使用它在Github上找到应用程序的最新版本。
我目前正在使用Swift 4.2和Alamofire来获取网络数据,并使用SwiftyJSON来解析数据。
我从测试开始,所以我可以使用它,首先使用simple JSON data。
这是我的代码
Alamofire.request("https://jsonplaceholder.typicode.com/todos").responseJSON { (responseData) -> Void in
if((responseData.result.value) != nil) {
let swiftyJsonVar = JSON(responseData.result.value!)
if let test = swiftyJsonVar[0]["title"].string {
print(test)
运行代码会将test
打印为delectus aut autem
,这对JSON数据而言是正确的。
尽管我尝试将代码用于我的最初目标,如下所示
Alamofire.request("https://api.github.com/repos/s0uthwest/futurerestore/releases/latest").responseJSON { (responseData) -> Void in
if((responseData.result.value) != nil) {
let swiftyJsonVar = JSON(responseData.result.value!)
// print(swiftyJsonVar)
if let test = swiftyJsonVar[0]["assets"]["browser_download_url"].string {
print(test)
尽管运行代码不会产生任何结果。我敢肯定,尝试获取browser_download_url
的方式存在问题,所以我不确定如何进行。
答案 0 :(得分:0)
Codable
非常简单。
创建一个struct
struct Item: Codable {
let userId: Int
let id: Int
let title: String
let completed: Bool
}
在Alamofire完成处理程序中,您只需对其进行解码,如下所示:
let decoder = JSONDecoder()
do {
// don't force unwrap in your project
var yourStructs = try decoder.decode([Item].self, from: data!)
print("yourStructs contains \(String(yourStructs.count)) items")
} catch {
print("kaboom!", error)
}