iOS编程学习二十一(网络和JSON解析)

来源:互联网 发布:华为软件开发人员 编辑:程序博客网 时间:2024/05/18 01:41

今天做的是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可读性更高,越来越广泛,所以这是一项基本的功能。