AlamofireJsonToObjects 2.4.1

AlamofireJsonToObjects 2.4.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最近发布Mar 2017
SwiftSwift 版本3.0
SPM支持 SPM

evermeer 维护。



 
依赖项
Alamofire>= 0
EVReflection>= 0
 

AlamofireJsonToObjects

🚨现在这是 EVReflection 的一个 subspec,代码在那里维护。🚨

您可以通过以下方式将其作为 subspec 安装

use_frameworks!
pod "EVReflection/Alamofire"

除了这个 subspec 之外,还有以下 subspec:XML、AlamofireXML、Moya、MoyaRxSwift 和 MoyaReflectiveSwift

Awesome

如果您有问题但不希望创建问题,那么我们可以这样(EVReflection 是 AlamofireJsonToObjects 的基础)

使用 AlamofireJsonToObjects,从 JSON 源获取并解析到对象非常简单。无需属性映射。使用反射将值放入相应的属性中。

AlamofireJsonToObjects 基于以下库

  • Alamofire 是一个优雅的 Swift HTTP 网络库
  • EVReflection 用于将 JSON 结果解析到您的对象中

此库深受 AlamofireObjectMapper 的启发

目前,主分支适用于 Swift3。如果您想继续使用 Swift 2.2(或 2.3),则切换到 Swift2.2 分支。运行测试以查看 AlamofireJsonToObjects 的工作情况。

在您的应用程序中使用 AlamofireJsonToObjects

“AlamofireJsonToObjects” 通过依赖管理器 CocoaPods 提供。

您只需将以下两行添加到 Podfile 中,即可将 AlamofireJsonToObjects 添加到您的 workspace

use_frameworks!
pod "AlamofireJsonToObjects"

您还需要在 swift 文件的顶部添加一个导入,如下所示

import AlamofireJsonToObjects

示例代码

class WeatherResponse: EVNetworkingObject {
    var location: String?
    var three_day_forecast: [Forecast] = [Forecast]()
}

class Forecast: EVNetworkingObject {
    var day: String?
    var temperature: NSNumber?
    var conditions: String?
}

class AlamofireJsonToObjectsTests: XCTestCase { 
    func testResponseObject() {
        let URL = "https://raw.githubusercontent.com/evermeer/AlamofireJsonToObjects/master/AlamofireJsonToObjectsTests/sample_json"
        Alamofire.request(URL)
            .responseObject { (response: DataResponse<WeatherResponse>) in
            if let result = response.result.value {
                // That was all... You now have a WeatherResponse object with data
           }
        }
        waitForExpectationsWithTimeout(10, handler: { (error: NSError!) -> Void in
            XCTAssertNil(error, "\(error)")
        })
    }
}

上面的代码将以下 json 传递到对象

{  "location": "Toronto, Canada",    
   "three_day_forecast": [
      { "conditions": "Partly cloudy",
        "day" : "Monday",
        "temperature": 20 
      }, { 
        "conditions": "Showers",
        "day" : "Tuesday",
        "temperature": 22 
      }, { 
        "conditions": "Sunny",
        "day" : "Wednesday",
        "temperature": 28 
      }
   ]
}

高级对象映射

AlamofireJsonToObjects 基于 EVReflection,您可以像属性映射、转换器、验证器和键清理一样使用所有 EVReflection 功能。有关更多信息,请参阅 EVReflection

处理HTTP状态 >= 300

当网络调用返回HTTP错误状态(300或更高)时,这将被添加到evReflectionStatuses中作为一个自定义错误。请参阅单元测试 testErrorResponse 作为示例。为了使这一功能工作,您确实需要将EVNetworkingObject作为您的基类,而不是EVObject。然后,您还需要注意,如果您重写initValidation或propertyMapping函数,您也必须调用该函数的super。

许可证

AlamofireJsonToObjects遵守MIT 3许可证。有关更多信息,请参阅LICENSE文件。

我的其他库

还可以查看我的其他开源iOS库

  • EVReflection - Swift库,具有支持NSCoding、Printable、Hashable、Equatable和JSON的反射函数
  • EVCloudKitDao - 简化对Apple CloudKit的访问
  • EVFaceTracker - 计算您的设备相对于您的脸的距离和角度,以模拟3D效果
  • EVURLCache - 一个NSURLCache子类,用于处理所有使用NSURLRequest进行的Web请求
  • AlamofireJsonToObject - Alamofire扩展,使用EVReflection将JSON响应数据转换为Swift对象
  • AlamofireXmlToObject - Alamofire扩展,使用EVReflection和XMLDictionary将XML响应数据转换为Swift对象
  • AlamofireOauth2 - 使用Alamofire实现的OAuth2
  • EVWordPressAPI - 使用AlamofireOauth2、AlomofireJsonToObjects和EVReflection实现WordPress API的Swift库(开发中)
  • PassportScanner - 扫描护照的MRZ代码,提取姓、名、护照号码、国籍、出生日期、到期日期和助记号