您的位置:首页 > 理论基础 > 计算机网络

iOS网络编程4--使用SwiftyJSON解析JSON数据

2016-04-22 20:29 579 查看
iOS网络编程4—解析JSON(使用SwiftyJSON)

一、苹果公司提供NSJSONSeralization解析数据,但是每一步都比较麻烦。

使用SwiftyJSOND的主要特点:在获取多层次结构JSON数据时,不需要这个和下一个节点存不存在,对于option类型会自动进行拆包,用很少的代码即可以获取数据。

SwityJSON的使用介绍:传送门
英文介绍

一、使用一般的swift语言直接解析JSON示例部分代码如下

这里我们使用一个百度的天气预报API接口,地址:http://api.map.baidu.com/telematics/v3/weather?location=%E5%90%88%E8%82%A5&output=json&ak=wl82QREF9dNMEEGYu3LAGqdU

代码截图:



源代码:

let url = NSURL(string: "http://api.map.baidu.com/telematics/v3/weather?location=%E5%90%88%E8%82%A5&output=json&ak=wl82QREF9dNMEEGYu3LAGqdU")

///使用alamofire进行网络请求

let jsonRequest = Alamofire.request(.POST, url!, parameters: nil, encoding: ParameterEncoding.JSON, headers: nil)
jsonRequest.responseJSON { response in//在闭包里面对数据解析

print(response.request)//可以得到URL
print("response.data数据为:\(response.data)") //response.data的数据为一群数字流
let json = JSON(data: response.data!)//得到json数据,并转换
print("json解析后数据为:\(json)")
print("responses数据:",response)
print("response.result.value的值:",response.result.value)
//获取天气
var path = ["results",0,"weather_data",0,"weather"]
let weather = json["results",0,"weather_data",0,"weather"].string
print("天气是:",weather!)

}


response.data中的数据:



解析json后的数据



直接输出response:



获取到目标数据:



具体输出语句看代码

XML、JSON介绍:伯乐在线-掌握XML、JSON极其解析

学习参考:航哥—SwiftyJSON的使用详解

航哥—解析JSON数据(自带内部类和SwiftyJSON)

学习中遇到的问题:

1、 URL问题: 在将网络上的API接口(打开网页后)URL复制过来的,URL中部分编码进行了转换,转换为了中文,所以导致url不对,会导致一个错误提示:EXEC_BAD_ACCESS 这个问题代表内存泄露,释放不存在的对象,这里是因为URL地址(赋值后转换导致)不存在

【提示】:使用API接口时,有时候使用打开后的网页URL有可能不对

比如APL接口为:http://api.map.baidu.com/telematics/v3/weather?

location=%E5%90%88%E8%82%A5&output=json&ak=wl82QREF9dNMEEGYu3LAGqdU

打开网页后的为:http://api.map.baidu.com/telematics/v3/weather?location=合肥&output=json&ak=wl82QREF9dNMEEGYu3LAGqdU

注意:划线部分不同的(是不是URL中含有中文的原因???)

2、 URL问题:使用Alamofire时用到的url.如果是将完整URL放在url参数中,不管parameters为什么都可以得到数据,但是如果将URL分开(把参数提出来放在parameters中,怎么的不导数据,会出错)【为什么了????】

解决:暂且将整个URL直接用在url参数中,可以请求成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: