Google Custom Search Engineを用いてGoogle画像検索の結果の画像URLを配列に格納したいのです。

手元の本の「JSONデータを受信する」という項目を確認した所、以下のコードが乗っていました。

@IBAction func clickButton(sender: AnyObject){
let url = NSURL(string: "http://moonmile.net/ios9/persons.json")
let req = NSURLRequest(URL: url!)
let task = NSURLSession.sharedSession().dataTaskWithRequest(req,completionHandler:{
    (data,res,err) in
    if data != nil{
        dispatch_async(dispatch_get_main_queue(),{
            do{
                let jeson = try NSJSONSerialization.JSONObjectWithData(data!,options: NSJSONReadingOptions.MutableContaioners)

                //最初の要素を表示する
                let item = (json as! NSArray)[0]
                let name = item["name"] as! String
                let age = item["age"] as! Int
                let addr = item["address"] as! String
                self.text1.text = "\(name)\n\(age)\n\(addr)\n"
            }catch{
                self.text1.text = "parse error"
            }
        })
    }else {
        dispatch_async(dispatch_get_main_queue(),{
            self.text1.text = "error"
        })
    }
})
task.resume()

}

ですが、Swift2対応の本だったようでうまく動きません。

リクエストURLは
https://www.googleapis.com/customsearch/v1?key=?????&cx=????&searchType=image&q="検索語"

のような形で、
帰ってくるJSONデータのitem配列の中の"link"に欲しい画像のURLがあることまでは分かっているのですが、Swift3で動くものを作れなくて行き詰まっています。

iOSでGoogle画像検索の結果画像を使用した経験がおありの方がいらっしゃいましたらよろしくお願いします。

初心者ですが、アドバイスをよろしくお願いいたします。

追記

@IBAction func clickButton(sender: AnyObject){
let url = URL(string: "http://moonmile.net/ios9/persons.json")
let req = URLRequest(url: url!)
let task = URLSession.shared.dataTask(with: req,completionHandler:{
    (data,res,err) in
    if data != nil{
        DispatchQueue.main.asynchrononusly(execute:){
            do{
                let jeson = try NSJSONSerialization.JSONObjectWithData(data!,options: NSJSONReadingOptions.MutableContaioners)

                //最初の要素を表示する
                let item = (json as! NSArray)[0]
                let name = item["name"] as! String
                let age = item["age"] as! Int
                let addr = item["address"] as! String
                self.text1.text = "\(name)\n\(age)\n\(addr)\n"
            }catch{
                self.text1.text = "parse error"
            }
        })
    }else {
        DispatchQueue.main.asynchronously(execute:){
            self.text1.text = "error"
        })
    }
})
task.resume()

}

とりあえずXcodeに言われるまま修正してみましたがValue of Type DispatchQueue has no member asynchronously(execute:)で詰みました。
正直何をやっているのかさっぱり分かりません。
Apple公式ドキュメントのクラスの説明全部読まないといけないんでしょうか