摘要:上一篇文章中我们介绍了使用解析的方法,但是还是用到了这样的工具,那么有木有什么办法能够更简单的解决这样的问题的作者还为我们提供了这样一个工具,让我们能够更加容易的处理数据基于目前使用最广泛的库和我们上次提到的第三方库导入我们通过导入在用到到
上一篇文章中我们介绍了使用EVReflection解析JSON的方法,但是还是用到了SwiftyJSON这样的工具,那么有木有什么办法能够更简单的解决这样的问题EVReflection的作者还为我们提供了AlamofireJsonToObjects这样一个工具,让我们能够更加容易的处理JSON数据
第三方库导入AlamofireJsonToObjects 基于目前使用最广泛的Swift HTTP库Alamofire和我们上次提到的
EVReflection
我们通过CocoaPods导入
use_frameworks! pod "AlamofireJsonToObjects"
在用到到Swift文件中import AlamofireJsonToObjects
Demo作为EVReflection的一个配套工具,它的使用非常简单,我们通过一个Demo一起来学习一下
构建数据模型根据我们上次写出的数据模型,我们写出整个response的数据模型
import Foundation import EVReflection class CityModel:EVObject{ var city_name = "" var city_pinyin = "" var short_name = "" var short_pinyin = "" var city_id = 100010000 }
如下
class CityModelApiResponse:EVObject{ var cities = [CityModel]() var errno = 0; var msg = ""; }发起网络请求
在我们的文件中import AlamofireJsonToObjects
我们这次先对Alamofire的网络请求做一些封装,我们这里使用了泛型以保证通用性
这里不再responseJSON而是responseObject
class func invokeObject< T: EVObject >( url:String, parameters:[String: AnyObject]? = nil, complete:(object: T?, error: NSError?) -> Void){ Alamofire.request(.GET, ServiceEndpointBase, parameters: nil, encoding: .URL, headers: ["apikey":"ownAPIKey"]).validate(statusCode: 200..<300).responseObject { (URLRequest:NSURLRequest?, HTTPURLResponse:NSHTTPURLResponse?, result:Result< T, NSError>) in complete(object: result.value, error: result.error) } }
接下来我们写具体的涉及业务的请求方法
class func getCityListObject(complete:(object: CityModelApiResponse?, error: NSError?) -> Void){ invokeObject(ServiceEndpointBase,parameters: nil,complete: complete) }调用方法及结果
我们在viewDidLoad方法中调用一下我们的网络请求方法
ServiceProxy.getCityListObject { (object, error) in print(object!) }
控制台结果如下
CityModelApiResponse { hash = 5326178534503437261 key = cities, value = ( { "city_id" = 100010000; "city_name" = "U5317U4eacU5e02"; "city_pinyin" = beijing; "short_name" = "U5317U4eac"; "short_pinyin" = bj; }, { "city_id" = 500010000; "city_name" = "U5929U6d25U5e02"; "city_pinyin" = tianjin; "short_name" = "U5929U6d25"; "short_pinyin" = tj; }, { "city_id" = 1800010000; "city_name" = "U77f3U5bb6U5e84U5e02"; "city_pinyin" = shijiazhuang; "short_name" = "U77f3U5bb6U5e84"; "short_pinyin" = sjz; }, { "city_id" = 1800020000; "city_name" = "U5510U5c71U5e02"; "city_pinyin" = tangshan; "short_name" = "U5510U5c71"; "short_pinyin" = ts; } ... ) key = errno, value = 0 key = msg, value = success }
AlamofireJsonToObjects不仅提供了responseObject还有responseArray,可以直接导出数组
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/16161.html
摘要:解析是开发时经常会遇到的需求,绝大部分网络请求的返回数据都是以的形式,手动写解析的代码费时费力,写出很多丑陋的代码。 JSON解析是App开发时经常会遇到的需求,绝大部分网络请求的返回数据都是以JSON的形式,手动写JSON解析的代码费时费力,写出很多丑陋的代码。EVReflection提供了一种更加优雅简单的JSON解析方式 使用简介 EVReflection可以自动的将符合EVOb...
摘要:所以仅用于简化理解,快速入门,依然需要阅读有深入研究的文章来加深对各种异步流程控制的方法的掌握。 原文地址:http://zodiacg.net/2015/08/javascript-async-control-flow/ 随着ES6标准逐渐成熟,利用Promise和Generator解决回调地狱问题的话题一直很热门。但是对解决流程控制/回调地狱问题的各种工具认识仍然比较麻烦。最近两天...
摘要:代码本身不难,容易看懂,但前面说到,这里我故意这样写,因为需要说两个东西从名称我们就可以看出,这是一个解析类。没错,它可以把数据分别通过和解析成和。这跟普通的解析差不多,不展开说。只贴代码不作解释,如想详细了解,看文末链接。 (转自)https://www.cnblogs.com/robbinluobo/p/7217387.html String、JsonObject、JavaBe...
摘要:背景分析至此,下一步要解决的问题就是完成一次独立的请求,并解析得到目标数据。上方地址栏的网址是请求的入口,中间圆角方框中的格式天津则是请求参数。当我看到中的天津时,非常开心,因为我找到了请求的入口。 概要 背景描述 网站和http请求分析 IP受限的问题 1. 背景描述 大为软件公司于2001年9月在保定国家高新技术产业开发区注册,公司致力于中国、日本知识产权软件的研究开发,立志成...
摘要:数据分析实战北京二手房房价分析数据分析实战北京二手房房价分析建模篇除了数据分析,好多朋友也对爬虫特别感兴趣,想知道爬虫部分是如何实现的。爬取目标是北京二手房,仅针对一个城市而言,数据量并不大。 作者:xiaoyu 微信公众号:Python数据科学 知乎:python数据分析师 showImg(https://segmentfault.com/img/remote/1460000016...
阅读 1698·2021-11-24 10:45
阅读 1266·2021-11-18 13:15
阅读 4187·2021-09-22 15:47
阅读 3547·2021-09-09 11:36
阅读 1873·2019-08-30 15:44
阅读 2976·2019-08-29 13:05
阅读 2391·2019-08-29 12:54
阅读 1823·2019-08-26 13:47