Swift 2.0 网络数据获取和JSON解析

在swift中获取网络数据可以使用很方便的第三方库Alamofire, 在这里我总结了下使用NSURLSession来获取网络数据!

获取JSON数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let aUrl = "www.a.sample.url"
let nsUrl = NSURL(string: aUrl)
// 获取数据的task
let task = NSURLSession.sharedSession().dataTaskWithURL(nsUrl) { (data, response, error) -> Void in

// 上面获取的是类似于 365c2f22 2c227373 这样的数据. 似乎是16进制码
print("+++++++\(data!)")

// 格式成utf8后 可以看出是正常的json数据.
print(NSString(data: data!, encoding: NSUTF8StringEncoding))

// 转化成json格式.jsonData 用于json解析. 这里的try 是swift2.0的异常处理的新语法.
let jsonData = try! NSJSONSerialization.JSONObjectWithData(data! , options: NSJSONReadingOptions())
}
// 开始获取数据
task.resume()

json解析

我们可以使用一个很好用的json解析库swiftyjson
当然你也可以不使用第三方库,自己来解析,需要一点耐心折腾.相关链接
若使用swiftyjson.可以参照以下信息.

1
2
3
4
// 解析json数据
let json = JSON(jsonData)
// 用datakey来提取对应的值, 这里的string类型是string optional,用stringValue得到unwrap后的值
let data = json["datakey"].string

两行就搞定,只能用爽来形容了.

MORE

相关的数据获取

获取图片数据

let url = “www.image.site"
let NSurl = NSURL(string: url)
let imageData = NSData(contentsOfURL: NSurl!)
let image = UIImage(data: imageData!)

获取影音数据

let url = “www.mpmovie.site"
let audioPlayer = MPMoviePlayerController()
audioPlayer.contentURL = NSURL(string: url)