#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](https://github.com/Alamofire/Alamofire)
2.[SwiftyJson](https://github.com/SwiftyJSON/SwiftyJSON) [JSONExport.app](https://github.com/AsHighAsHonor/YYangs-Pepository/blob/master/Sources/JSONExport.app.zip)
3.[JSONExport](https://github.com/Ahmed-Ali/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](https://github.com/AsHighAsHonor/YYangs-Pepository/blob/master/Sources/JSONExport.app.zip) ,打开finder拖进"应用程序"就可以正常使用了.

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

>将报文贴入`JSONExport`

>将生成的文件引入工程 , 在获取请求数据的地方直接使用 , 就是这么简单
```
//调用便捷方法RootClass()初始化实体模型类 , JSON(value) 是 swiftyJson 的方法
let versionModel = RootClass(fromJson: JSON(value))
//版本号
let version = versionModel.version
```
##3.Tips
* JSON 字符串中含有中文 字符可能会提示“invalid JSON”,转成unicode再使用,推荐个:[在线unicode转中文](http://www.bejson.com/convert/unicode_chinese/)
* 如果生成的 model 类文件有问题就重启一下` JSONExport `
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拖进"应用程序"就可以正常使用了.

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

将报文贴入JSONExport

将生成的文件引入工程 , 在获取请求数据的地方直接使用 , 就是这么简单
//调用便捷方法RootClass()初始化实体模型类 , JSON(value) 是 swiftyJson 的方法
let versionModel = RootClass(fromJson: JSON(value))
//版本号
let version = versionModel.version
3.Tips
- JSON 字符串中含有中文 字符可能会提示“invalid JSON”,转成unicode再使用,推荐个:在线unicode转中文
- 如果生成的 model 类文件有问题就重启一下
JSONExport