从 alamofire 中的 api 调用中提取响应数据
Extract response data from api call in alamofire
我读过很多关于从 api 获取响应对象的文档,但无法推导出如何提取数据。我在 api 通话中使用了 alamofire。 api 调用就像
AF.request("http://10.177.41.163:9000/signup",
method: .post,
parameters: parameters,
encoder: JSONParameterEncoder.default).responseJSON{ response in
print(response.result)
在我的打印语句中,我得到的回复是
`success({
error = {
code = PC05;
message = "User already exsists";
};
payload = {
};
success = 0;
})`
很好,但我想提取错误代码,如何实现?以及一般如何从 swift.
中的响应中提取数据
AF.request("http://10.177.41.163:9000/signup",
method: .post,
parameters: parameters,
encoder: JSONParameterEncoder.default).responseJSON{ response in
print(response.result)
let responseJSON = JSON(response.result) // response converted in json format
let statusCode = responseJSON["error"]["code"].stringValue // You can get status code
注意:安装 pod 'SwiftyJSON' 以将 response.result 转换为 JSON 格式。
你需要解码jSON响应,所以创建一个模型来解码这个,当然之前还要检查响应是否成功,你会举个例子:
声明自己为模特:
struct RootResponse : Decodable {
var error: ErrorStruct
var payload: PayloadStruct
var success: Int
}
struct ErrorStruct: Decodable {
var code: String
var message: String
}
struct PayloadStruct : Decodable {
var ?
}
根据 jSON 响应声明模型后,您可以切换到向您发出请求的函数:
AF.request("http://10.177.41.163:9000/signup",
method: .post,
parameters: parameters,
encoder: JSONParameterEncoder.default).responseJSON{ response in
print(response.result)
switch response.result {
case .success:
if let data = response.data {
print(data)
// Convert This in JSON
do {
let responseDecoded = try JSONDecoder().decode(RootResponse.self, from: data)
print("USER: ", responseDecoded.error.code, "Etc...")
}catch let error as NSError{
print(error)
}
}
case .failure(let error):
print("Error:", error)
}
}
希望对您有所帮助。
我读过很多关于从 api 获取响应对象的文档,但无法推导出如何提取数据。我在 api 通话中使用了 alamofire。 api 调用就像
AF.request("http://10.177.41.163:9000/signup",
method: .post,
parameters: parameters,
encoder: JSONParameterEncoder.default).responseJSON{ response in
print(response.result)
在我的打印语句中,我得到的回复是
`success({
error = {
code = PC05;
message = "User already exsists";
};
payload = {
};
success = 0;
})`
很好,但我想提取错误代码,如何实现?以及一般如何从 swift.
中的响应中提取数据AF.request("http://10.177.41.163:9000/signup",
method: .post,
parameters: parameters,
encoder: JSONParameterEncoder.default).responseJSON{ response in
print(response.result)
let responseJSON = JSON(response.result) // response converted in json format
let statusCode = responseJSON["error"]["code"].stringValue // You can get status code
注意:安装 pod 'SwiftyJSON' 以将 response.result 转换为 JSON 格式。
你需要解码jSON响应,所以创建一个模型来解码这个,当然之前还要检查响应是否成功,你会举个例子:
声明自己为模特:
struct RootResponse : Decodable {
var error: ErrorStruct
var payload: PayloadStruct
var success: Int
}
struct ErrorStruct: Decodable {
var code: String
var message: String
}
struct PayloadStruct : Decodable {
var ?
}
根据 jSON 响应声明模型后,您可以切换到向您发出请求的函数:
AF.request("http://10.177.41.163:9000/signup",
method: .post,
parameters: parameters,
encoder: JSONParameterEncoder.default).responseJSON{ response in
print(response.result)
switch response.result {
case .success:
if let data = response.data {
print(data)
// Convert This in JSON
do {
let responseDecoded = try JSONDecoder().decode(RootResponse.self, from: data)
print("USER: ", responseDecoded.error.code, "Etc...")
}catch let error as NSError{
print(error)
}
}
case .failure(let error):
print("Error:", error)
}
}
希望对您有所帮助。