2015-07-19 249 views
1

我正在從我的應用程序中解析json的方式。解析JSON數組

來源:http://api.randomuser.me/

我的代碼:

var bytes: NSMutableData? 

@IBAction func loadJson(sender: AnyObject) { 

    let request = NSURLRequest(URL: NSURL(string: "http://api.randomuser.me/")!) 

    let loader = NSURLConnection(request: request, delegate: self, startImmediately: true) 

} 

func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) { 

     self.bytes = NSMutableData() 

} 

func connection(connection: NSURLConnection!, didReceiveData conData: NSData!) { 

     self.bytes?.appendData(conData) 

} 

func connectionDidFinishLoading(connection: NSURLConnection!) { 

    let jsonResult: Dictionary = NSJSONSerialization.JSONObjectWithData(self.bytes!, options: NSJSONReadingOptions.MutableContainers, error: nil) as! Dictionary<String, AnyObject> 

    let results: NSArray = jsonResult["results"]! as! NSArray 

    println(results) 

    for result in results { 

     // Works 
     println(result) 

     // Works 
     println(result["seed"]) 

     // Does not work !!! why? 
     println(result["user"]["email"]) 

    } 

} 

爲什麼我不能得到數組電子郵件?

如果你想要的話,你可以看看上面鏈接中的json。

+0

而不是鏈接到JSON,請直接將其包含在問題中。爲了讓您的問題保持在話題上,我刪除了您問題中基於意見的部分。但最終,這個問題仍然處於邊緣。你能詳細說明嗎?//不行!爲什麼?'「不起作用」是什麼意思? – nhgrif

回答

1

通過使用SwiftyJSON你可以輕鬆地處理你的JSON數據是這樣的:

@IBAction func loadJson(sender: AnyObject) { 

    let baseURL = NSURL(string: "http://api.randomuser.me/") 
    let userData = NSData(contentsOfURL: baseURL!) 

    let json = JSON(data: userData!) 
    let seeds = json["results"][0]["seed"].stringValue 
    let email = json["results"][0]["user"]["email"].stringValue 
    println(seeds) //1bbefb89fc47c81501 
    println(email) //[email protected] 
} 

希望這會有所幫助。

+0

謝謝這個lib很棒,但是如何處理web服務器上的基本認證? –

+0

我的意思是,如果有訪問所需的用戶名和密碼* –

+0

你可以保存用戶名和密碼,你可以使用它。 –