这是一个把 Alamofire
请求的数据 转成 SwiftyJSON
中的 JSON
或者转化成对象
你可以通过CocoaPods
来使用RxSwift-SwiftyJSON
在你的Podfile中添加如下配置
RxSwift-SwiftyJSON is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'RxSwift-SwiftyJSON', '~> 1.1'
然后运行pod install
创建一个实现 ZJSwiftyJSONAble
协议的Class
或者 Struct
Create a Class
or Struct
which implements the ZJSwiftyJSONAble
protocol.
如果你返回数据的格式为:
if you get the json like this:
{
"success":"true",
"msg":"获取用户信息成功",
"obj":[]
}
你可以建立以下两个对象:
you can create two model like this:
import Foundation
import SwiftyJSON
class ZJResult_S<T: ZJSwiftyJSONAble>: ZJSwiftyJSONAble {
var success: String!
var msg: String!
var obj: [T]?
required init?(jsonData:JSON){
self.success = jsonData["success"].stringValue
self.msg = jsonData["msg"].stringValue
self.obj = jsonData["obj"].arrayValue.flatMap { T(jsonData: $0) }
}
}
import Foundation
import SwiftyJSON
class ZJArticle_S: ZJSwiftyJSONAble {
var title: String!
var keywords: String!
var description: String!
var date: String!
var path: String!
var url: String!
required init?(jsonData:JSON){
self.title = jsonData["title"].stringValue
self.keywords = jsonData["keywords"].stringValue
self.description = jsonData["description"].stringValue
self.date = jsonData["date"].stringValue
self.path = jsonData["path"].stringValue
self.url = jsonData["url"].stringValue
}
}
添加pod库
add pod
pod 'RxAlamofire'
然后我们就可以这样请求数据了
then we can query data like this:
_ = string(.POST, "http://t.yidaisong.com:90/login!in.do",
parameters: ["userPhone":"15225178360","userLoginPswd":"123456"])
.observeOn(MainScheduler.instance)
.mapSwiftyObject(ZJResult_S<ZJUser_S>)
.subscribe(
onNext: { repos -> Void in
self.showTextView.text = "用SwiftyJSON把结果转为对象\n"
+ "用户名:\(repos.obj!.userName)\n"
+ "昵称:\(repos.obj!.userAlias)";
},
onError: { (error) -> Void in
self.showTextView.text = "\(error)";
})
是不是很简单
so easy
如果你不想转为对象 想直接用 SwiftyJSON 对应的JSON格式 你可以这样写
if you dont want to change it to model,just to JSON,you can write like this
_ = string(.POST, "http://t.yidaisong.com:90/login!in.do",
parameters: ["userPhone":"15225178360","userLoginPswd":"123456"])
.observeOn(MainScheduler.instance)
.mapSwiftyJSON()
.subscribe(
onNext: { repos -> Void in
self.showTextView.text = "用SwiftyJSON把结果转为JSON\n"
+ "用户名:\(repos["obj"]["userName"].stringValue)\n"
+ "昵称:\(repos["obj"]["userAlias"].stringValue)";
},
onError: { (error) -> Void in
self.showTextView.text = "\(error)";
})
剑行者
- 网站: www.psvmc.cn
- 邮箱: [email protected]
你可以在MIT许可下使用RxSwift-SwiftyJSON
,更多信息请查看LICENSE
文件
RxSwift-SwiftyJSON
is available under the MIT license. See the LICENSE file for more info.