Swift 使用 Alamofire + SwiftyJson + JSONExport 一键生成网络请求 Model

[toc]

1.工具

swift 是类型安全语言,OptionalType(可选类型)可以避免很多OC 中的 crash,但也给我们开发造成了很多繁琐的操作例如unwrap(解包). 最典型的例子就是在网络请求解析 Json ,即使使用了 optional chain , 要获取数据也是很痛苦的一件事

if let JSONObject = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]],
    let username = (JSONObject[0]["user"] as? [String: Any])?["name"] as? String {
        //  username
}

一下介绍几个 swift 里常用的工具帮助我们在解析网络请求的时候飞起来

1.Alamofire 2.SwiftyJson JSONExport.app 3.JSONExport 4.Visual Json

Alamofire不用多说, AFNetworking 的 swift 版本 , 一个 swift 中使用最广泛的网络库 ;

SwiftyJson 用于序列化 json的库 , 配合alamofire 使用方便 直接 JSON(jsonValue) 就可以将 alamofire 的结果返回序列化好了的 json 数据 ;

JSONExport 是一个运行在 macOS 上通过 JSON 字符串转为 model 的开源工具,支持 Java、Objective-C 和 Swift ;

JSONExport + SwiftyJson 可以让我们直接使用 json 报文生成 Swift 的Model文件 ! 让我们可以在从 json 数据获取 想要的数据时直接使用 model.xxx 的语法(还记得 OC 中的 MJExtension 吗 ? 作用就类似于这货 ! );

VisualJson 一个 mac app 能够模拟发起网络请求获取json 数据并格式化的工具

2.使用方法

JSONExport官方介绍 Installation Kindly clone the project, and build it using xCode 8 and above. 需要下载工程用 xcode8编译cmd+b 打包生成 macApp 就可以使用了 , 如果嫌麻烦可以直接使用我打包的 JSONExport.app ,打开finder拖进"应用程序"就可以正常使用了.

WechatIMG90

下面以版本更新为例 使用 Alamofire + SwiftyJson + JSONExport 完成一次网络请求: 请求地址: GET:http://api.fir.im/apps/latest/589d9d7e959d6944d80000e6?api_token=2bc11ca72f6af8f858cf648342d6693b 使用VisualJson模拟请求,返回结果及json 报文

QQ20170218-113222@2x

将报文贴入JSONExport

QQ20170218-112557@2x

将生成的文件引入工程 , 在获取请求数据的地方直接使用 , 就是这么简单

//调用便捷方法RootClass()初始化实体模型类 , JSON(value) 是 swiftyJson 的方法
let versionModel = RootClass(fromJson: JSON(value))
//版本号
let version = versionModel.version

3.Tips