如何在Alamofire 5中获得响应可解码



我收到API的两个响应
在故障情况下

{"message":"Either your supplied Email ID or Password is incorrect","status":201,"data":{}}

成功案例

{
"status": 200,
"data": {
"access_token": "7a1bfe8c85ef81c635d7d14b9e335984",
"app_access_token": "168aa07e4966186447694e95e4127fb5",
}
}

我正在使用带有可选项的decodeIfPresent将数据解析为单个结构。有没有更好的方法可以在不使用失败结构和成功结构的情况下解析数据
任何指导都将受到赞赏

您可以使用swiftJSON pod并在JSON中解析数据,这就是我为api响应所做的,并在JSON中处理它,您可以使用和编辑

func ProfileApi(url : String , parameters : [String : String]){

Alamofire.request(url , method : .post , parameters : parameters).responseJSON { (response) in
if response.result.isSuccess
{
print("API data recived")
let DiseaseCatagory : JSON = JSON(response.result.value!)
// print(plotCatagory[0]["name"])

//self.SelectedLevelIDArray = []
if let data = DiseaseCatagory.dictionaryObject
{
if let error = data["error_code"] as? Int{
print(error)
if error == 0{

if let data1 = data["data"] as? [String : Any]
{
print(data1)
if let PostDataRecieved = data1["about"] as? [[String : Any]]
{
print(PostDataRecieved)
var i = 0

while(i < PostDataRecieved.count){

self.ProfileName = PostDataRecieved[i]["first_name"] as! String
self.ProfileGender = PostDataRecieved[i]["gender"] as! String
self.ProfileEmail = PostDataRecieved[i]["email"] as! String
self.ProfileCountry = PostDataRecieved[i]["country"] as! String
self.ProfileDOB = PostDataRecieved[i]["dob"] as! String
self.profileImageUrl = PostDataRecieved[i]["profile_picture"] as! String
if let lastName = PostDataRecieved[i]["last_name"] as? String{

self.profileLastName = lastName
self.LastNameTextField.text = lastName
}





i = i + 1
}
}
self.AssignValues()
DispatchQueue.main.async {

self.hud.dismiss(afterDelay: 0.5)

}

}
}else{
if let error = data["error_string"] as? String{
let signUpAlert = UIAlertController(title: "Signup Error!", message: error, preferredStyle: .alert)
let okButton = UIAlertAction(title: "ok", style: .default, handler: nil)
signUpAlert.addAction(okButton)
self.present(signUpAlert, animated: true, completion: nil)
}
DispatchQueue.main.async {

self.hud.dismiss(afterDelay: 0.5)

}


}

}

}

}
else
{

print("Error : (response.result.error)")
let signUpAlert = UIAlertController(title: "Connection Error!", message: "Please check internet connection and try again", preferredStyle: .alert)
let okButton = UIAlertAction(title: "ok", style: .default, handler: nil)
signUpAlert.addAction(okButton)
self.present(signUpAlert, animated: true, completion: nil)

}

}
}

这是我正在处理的JSON响应

{"error_code":0,"error_string":"","data":{"about":[{"id":"2","user_name":"","first_name":"Mazeda","last_name":"Khanam","mobile_no":"07387276289","email":"mazedakhanam@yahoo.co.uk","profile_picture":"user_icon.jpeg","gender":"female","profession":"Mum","dob":"1984-09-06","mood_status":"Hey There!","registered_time":"0000-00-00 00:00:00","account_verified":"1","login_flag":"1","country":"United Kingdom","added_time":"2017-02-23 15:42:54","status":"1","android_push_token":"","ios_push_token":""}],"photo":[]}}

最新更新