iOSアプリでGoogle画像検索を利用する


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

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

[code]

    @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()
    
[/code]

}

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

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

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

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

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

追記

[code]

    @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()
    
[/code]

}

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




グレーゾーンな話はさておき :)

let data = str.data(using: .utf8)  
let json = try JSONSerialization.jsonObject(with: data!, options:
.mutableContainers ) as! [String: Any]  
let name = json["Name"] as! String

な感じで、JSONSerialization#jsonObject を使います。

