无法使用 AlamoFire 和 SwiftyJSON 解析 JSON

Posted

技术标签:

【中文标题】无法使用 AlamoFire 和 SwiftyJSON 解析 JSON【英文标题】:Can´t parse JSON with AlamoFire and SwiftyJSON 【发布时间】:2016-08-09 15:53:24 【问题描述】:

对于 ios,我一直坚持使用 AlamoFireSwiftyJSON 解析 JSON。我有一个像这样的 JSON:

["id":23561,"name":"RFI - Persan رادیو صدای Ùرانسه Ùارسی","country":"FR","image":"url":null,"thumb":"url":null,"slug":"rfi-persan-رادیو-صدای-Ùرانسه-Ùارسی","website":"rfi","twitter":"","facebook":"","categories":["id":21,"title":"News","description":"","slug":"news","ancestry":"4"],"streams":["stream":"http://rfi-persan.scdn.arkena.com/rfienpersan.mp3","bitrate":0,"content_type":"audio/mpeg","status":1],"created_at":"2016-01-12T07:52:08+01:00","updated_at":"2016-08-02T01:52:50+02:00"]

这是我迄今为止尝试过的,但不起作用:

func loadSomeJSONData() 
        Alamofire.request(.GET, "http://example.com/json/")
            .responseJSON  (_, _, data, _) in
                let json = JSON(data!)
                if let Name = json["name"].string 
                    println("name: \(firstName)") // Name should equal "RFI"
                
        
    

但由于某种原因,它没有从 json 对象中获取名称。

非常感谢!

【问题讨论】:

你在登录什么? 当您执行println 语句时,您在控制台中得到了什么? 【参考方案1】:

你的 json 是 Array 而不是 Dictionary,所以这样访问 json

if let arr = json.arrayObject as? [[String:AnyObject]]  
    if let name = arr[0]["name"] as? String 
        println("name: \(name)") // Name should equal "RFI"
    

【讨论】:

一个提示也可以访问其他对象,但请确保imagecategoriesstreams 也是数组。

以上是关于无法使用 AlamoFire 和 SwiftyJSON 解析 JSON的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Alamofire 测试存根响应

无法使用 AlamoFire 和 SwiftyJSON 解析 JSON

无法使用“((Any))”类型的参数列表调用“JSON” - 使用 AlamoFire 和 SwiftyJSON

无法使用 Alamofire 和 SwiftyJSON 在 tableviewcell 中加载 JSON 数据

无法使用 alamofire 打印 json 值

Alamofire 4 重试器和适配器无法看到更改的 accessToken