这是一个将 Alamofire
请求的数据转换为 SwiftyJSON
中的 JSON
或者转换为对象
的工具
您可以通过CocoaPods
来使用RxSwift-SwiftyJSON
。在Podfile中添加以下配置
RxSwift-SwiftyJSON通过CocoaPods提供。要安装它,只需将以下行添加到Podfile中
pod 'RxSwift-SwiftyJSON', '~> 1.0.1'
然后运行pod install
创建一个实现 ZJSwiftyJSONAble
协议的Class
或 Struct
Create a Class
or Struct
which implements the ZJSwiftyJSONAble
protocol.
如果返回数据的格式为:
如果得到的json如下:
{
"success":"true",
"msg":"获取用户信息成功",
"obj":{
"userName":"张剑",
"userAlias":"剑行者",
"invitationCode":100
}
}
你可以创建以下两个对象:
你可以按这样的模型创建:
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 = T(jsonData: jsonData["obj"])
}
}
import Foundation
import SwiftyJSON
class ZJUser_S: ZJSwiftyJSONAble {
var userName: String!
var userPhone: String!
var userAlias: String!
var invitationCode: Int!
required init?(jsonData:JSON){
self.userName = jsonData["userName"].stringValue
self.userPhone = jsonData["userPhone"].stringValue
self.userAlias = jsonData["userAlias"].stringValue
self.invitationCode = jsonData["userAlias"].intValue
}
}
添加pod库
add pod
pod 'RxAlamofire'
然后我们就可以这样请求数据了
我们可以这样查询数据
_ = 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格式,您可以这样做:
如果您不希望转换为模式,只想使用 SwiftyJSON 对应的JSON格式,您可以这样做:
_ = 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)";
})
您可以从下面的示例中参考使用方法
使用方法可以参考以下示例
剑行者
你可以在MIT许可下使用RxSwift-SwiftyJSON
,更多信息请查看LICENSE
文件
RxSwift-SwiftyJSON
在MIT许可下提供。有关更多信息,请参阅LICENSE
文件。