进入JSON目录?

进入JSON目录?,json,swift,Json,Swift,JSON: 我对var结果7等不满意。这显然不是正确的方法。我不太清楚为什么我们不能直接使用result[“posts”][0]并像那样堆叠它 你能解释一下为什么有时候会有双感叹号吗?我知道这是强制展开,但为什么它是双重的 谢谢 您可以考虑使用一些可以利用可选语义的本机swift json库,例如 然后你的代码可以重写为 let urlPath = "http://example.com/instanews/api/get_posts/" let url: NSURL = NSURL(s

JSON:

我对var结果7等不满意。这显然不是正确的方法。我不太清楚为什么我们不能直接使用result[“posts”][0]并像那样堆叠它

你能解释一下为什么有时候会有双感叹号吗?我知道这是强制展开,但为什么它是双重的


谢谢

您可以考虑使用一些可以利用可选语义的本机swift json库,例如

然后你的代码可以重写为

let urlPath = "http://example.com/instanews/api/get_posts/"
    let url: NSURL = NSURL(string: urlPath)
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
        println("Task completed")
        if((error) != nil) {
            // If there is an error in the web request, print it to the console
            println(error.localizedDescription)
        }
        var err: NSError?
        var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
        if(err != nil) {
            // If there is an error parsing JSON, print it to the console
            println("JSON Error \(err!.localizedDescription)")
        } else {
            var result: AnyObject = jsonResult["posts"]! as NSArray
            var result2: AnyObject = result[0]!
            var result3: AnyObject = result2["attachments"]!!
            var result4: AnyObject = result3[0]!
            var result5: AnyObject = result4["images"]!!
            var result6: AnyObject = result5["full"]!!
            var result7: AnyObject = result6["url"]!!
            println(result7)

        }

    })
    task.resume()

尝试此操作,但出现错误:AnyObject?没有成员“下标”您现在使用的json库是什么?
let urlPath = "http://example.com/instanews/api/get_posts/"
    let url: NSURL = NSURL(string: urlPath)
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
        println("Task completed")
        if((error) != nil) {
            // If there is an error in the web request, print it to the console
            println(error.localizedDescription)
        }
        var err: NSError?
        var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
        if(err != nil) {
            // If there is an error parsing JSON, print it to the console
            println("JSON Error \(err!.localizedDescription)")
        } else {
            var result: AnyObject = jsonResult["posts"]! as NSArray
            var result2: AnyObject = result[0]!
            var result3: AnyObject = result2["attachments"]!!
            var result4: AnyObject = result3[0]!
            var result5: AnyObject = result4["images"]!!
            var result6: AnyObject = result5["full"]!!
            var result7: AnyObject = result6["url"]!!
            println(result7)

        }

    })
    task.resume()
if let result7 = jsonResult["posts"]["attachments"]["images"]["full"]["url"].string {
    println(result7)
}