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

来源:互联网 发布:淘宝铁观音卖家 编辑:程序博客网 时间:2024/05/16 07:19

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参数中,可以请求成功。

 

0 0
原创粉丝点击