RxJSON

Swift CocoaPods Build Status codecov

用于 JSON 的 RxSwift 封装。

概览

这是一个将 JSON 字典 observable 转换为字符串 observable 的示例

URLSession.shared.rx.json(url: "https://api.github.com/repos/ReactorKit/ReactorKit")
  .mapJSON("owner")              // Observable<Any> -> Observable<Any>
  .mapJSON("login", String.self) // Observable<Any> -> Observable<String>
  .bind(to: ownerNameLabel.rx.text)

mapJSON() 支持 JSON 字典和数组

// Dictionary
Observable<Any>.mapJSON("key")           // Observable<Any>
Observable<Any>.mapJSON("key", Int.self) // Observable<Int>

// Array
Observable<Any>.mapJSON(at: 2)              // Observable<Any>
Observable<Any>.mapJSON(at: 3, String.self) // Observable<String>

当给定的访问器没有值或无法转换为给定的类型时,mapJSON() 将抛出一个 RxJSONError 错误

// Dictionary
source.mapJSON("unknownKey")    // Event.error(RxJSONError.valueNotFound)
source.mapJSON("name", Int.key) // Event.error(RxJSONError.castingFailed)

// Array
source.mapJSON(at: -1)          // Event.error(RxJSONError.valueNotFound)
source.mapJSON(at: 0, Int.key)  // Event.error(RxJSONError.castingFailed)

安装

贡献

欢迎任何讨论和 pull request 💖

创建 Xcode 项目

$ swift package generate-xcodeproj

许可

RxJSON 使用 MIT 许可。 请查看 LICENSE 文件了解更多信息。