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
代码截图:
源代码:
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参数中,可以请求成功。
一、苹果公司提供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参数中,可以请求成功。
相关文章推荐
- 24篇HTTP博客
- 常见HTTP状态码(200、301、302、500等)解说
- System.ServiceModel.CommunicationException: 接收HTTP 响应时错误发生
- HTTP协议 (1)初识HTTP
- HttpClient和DefaultHttpClient
- HttpClient 教程 (一)
- 网络开发中socket简介
- get value from agent failed: ZBX_TCP_READ() failed;[104] connection reset by peer
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- 802.11协议族简介
- TCP\IP卷一(第五章学习)
- 《TCP/IP详解》学习笔记四(TCP)
- 《TCP/IP详解》学习笔记三(13-16)
- 网络经常丢包原因
- 《TCP/IP详解》学习笔记二(8-12)
- 《TCP/IP详解》学习笔记一(1-7)
- android-async-http开源项目对服务器端返回JSON数据的处理
- 直接连接的网络
- Phpstorm 换行设置(复制 http://jingyan.baidu.com/article/86fae346b2cb673c49121ad3.html)
- 以http,svn两种方式访问svn库