今天做的是JSON的小例子,调用一个免费的web service,然后对返回的JSON内容解析后显示出来。
涉及到了网络和多线程,之前都学习过了,所以非常简单。
let request = URLRequest(url: loanUrl)
let task = URLSession.shared.dataTask(with: request, completionHandler: {
(data, response, error) -> Void in
if let error = error {
print(error)
return }
// Parse JSON data
if let data = data {
self.loans = self.parseJsonData(data: data)
// Reload table view
OperationQueue.main.addOperation({
self.tableView.reloadData()
})
} })
task.resume()
URLRequest来调用Service,返回数据后,返回到UI的主线程去更新UI。
用JSONSerialization类来解析JSON的内容:
var loans = [Loan]()
do {
let jsonResult = try JSONSerialization.jsonObject(with: data, options:
JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary
// Parse JSON data
let jsonLoans = jsonResult?["loans"] as! [AnyObject]
for jsonLoan in jsonLoans {
let loan = Loan()
loan.name = jsonLoan["name"] as! String
loan.amount = jsonLoan["loan_amount"] as! Int
loan.use = jsonLoan["use"] as! String
let location = jsonLoan["location"] as! [String:AnyObject]
loan.country = location["country"] as! String
loans.append(loan)
}
} catch {
print(error)
}
JSON和XML类似,但是比xml可读性更高,越来越广泛,所以这是一项基本的功能。