gpt4 book ai didi

ios - 使用 Alamofire 验证 JSON 响应

转载 作者:行者123 更新时间:2023-11-28 11:05:40 24 4
gpt4 key购买 nike

是否可以使用 Alamofire 验证器来获取已解析的 JSON 响应、检查属性并根据该值返回 true/false?

我有一个始终返回 200 个响应代码的 API,但响应具有成功属性。

我想在触发 responseJSON 回调之前检查此属性,并且仅在成功 == true 时才调用 responseJSON。

自定义验证器是否可行?

最佳答案

找到了一个我觉得不错的解决方案。首先,我创建了检查错误并提取我感兴趣的数据的扩展方法。我有一个成功回调和一个错误回调。

import Foundation
import Alamofire

extension Request {
public func apiSuccess(
queue queue: dispatch_queue_t? = nil,
options: NSJSONReadingOptions = .AllowFragments,
completionHandler: [String:AnyObject] -> Void)
-> Self
{
return response(
queue: queue,
responseSerializer: Request.JSONResponseSerializer(options: options),
completionHandler: { response in
if let jsonValue = response.result.value as? [String:AnyObject] {
let success = jsonValue["success"] as! Bool
if (success) {
completionHandler(jsonValue["object"] as! [String:AnyObject])
}
}
}
)
}

public func apiError(
queue queue: dispatch_queue_t? = nil,
options: NSJSONReadingOptions = .AllowFragments,
completionHandler: [String] -> Void)
-> Self
{
return response(
queue: queue,
responseSerializer: Request.JSONResponseSerializer(options: options),
completionHandler: { response in
if let jsonValue = response.result.value as? [String:AnyObject] {
let success = jsonValue["success"] as! Bool
if (!success) {
let errorDict = jsonValue["errors"] as! [String:[String]]
var errors : [String] = []
errorDict.keys.forEach { key in
errors += errorDict[key] as [String]!
}

completionHandler(errors)
}
}
}
)
}
}

然后我可以这样使用它:

Alamofire.request(.POST, url,
parameters: parameters,
encoding: .JSON)
.apiSuccess { response in
print("Success Callback", response)
}
.apiError { errors in
print("Errors ", errors)
}

关于ios - 使用 Alamofire 验证 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37839121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com