测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可协议 | MIT |
Released最新发布 | 2017年6月 |
SwiftSwift版本 | 3.0 |
SPM支持SPM | ✗ |
由 ApterKing 维护。
封装了 SwiftyJSON,它实现了
JSON→Model:将 JsonString 或 Dictionary/Array 等转换为模型,更多信息请查看 SwiftyJSON
Model→JSON:将实现协议 JSONConvertibleMappable 的模型转换为 JSON
您可以使用 Cocoapod 工具将其导入到您的项目
pod 'SwiftyJSONMappable'
或:与 Moya 一起使用
pod 'SwiftyJSONMappable/Moya'
或:与 RxSwift 一起使用
pod 'SwiftyJSONMappable/RxSwift'
class HttpBin: JSONMappable {
var args: [String: Any]
var headers: HttpBinHeaders
var origin: String
var url: String
required init(json: JSON) {
args = json["args"].dictionaryValue
headers = HttpBinHeaders(json: json["headers"])
origin = json["origin"].stringValue
url = json["url"].stringValue
}
}
let httpBin = ...
let JSON = httpBin.mapJSON() // transform to SwiftyJSON
let JSONString = httpBin.mapString() // transform to json String
您将得到如下结果
{
"headers" : {
"acceptEncoding" : "gzip;q=1.0, compress;q=0.5",
"acceptLanguage" : "en;q=1.0",
"connection" : "close",
"accept" : "*\/*",
"host" : "httpbin.org"
},
"origin" : "118.113.69.83",
"args" : {
},
"url" : "https:\/\/httpbin.org\/get"
}
class HttpBin: JSONMappable {
var args: [String: Any]
var headers: HttpBinHeaders
var origin: String
var url: String
required init(json: JSON) {
args = json["args"].dictionaryValue
headers = HttpBinHeaders(json: json["headers"])
origin = json["origin"].stringValue
url = json["url"].stringValue
}
}
public var ignoreProperties: [String]? {
return ["args"]
}
public var replacedProperties: [String : String]? {
return ["origin": "newOrigin"]
}
您将得到如下结果
{
"newOrigin" : "118.113.69.83",
"url" : "https:\/\/httpbin.org\/get",
"headers" : {
"acceptEncoding" : "gzip;q=1.0, compress;q=0.5",
"acceptLanguage" : "en;q=1.0",
"connection" : "close",
"accept" : "*\/*",
"host" : "httpbin.org"
}
}
MoyaProvider<APIService>().request(.testGet) { (result) in
switch result {
case let .success(response):
do {
let httpBin = try response.mapJSONMappable(HttpBin.self)
print(httpBin.mapString() ?? "")
} catch {
print(error)
}
case let .failure(error):
print(error)
}
}
RxMoyaProvider<APIService>().request(.testGet)
.mapJSONMappable(HttpBin.self)
.observeOn(SerialDispatchQueueScheduler(internalSerialQueueName: "test"))
.subscribe { (event) in
switch event {
case let .next(httpBin):
print(httpBin.mapString() ?? "请求完毕")
case let .error(error):
print(error)
default:
print(event)
}
}.addDisposableTo(disposeBag)
ApterKing,[email protected]
SwiftyJSONMappable 可在 MIT 许可协议下使用。有关更多信息,请参阅 LICENSE 文件。