В качестве примера мы получаем этот простой Json Response.
{
"success": true,
"Message": "data retrieved successfully",
"data": {
"name": "Dilan",
"age": "26",
"country": "Sri Lanka"
}
}
просто вы можете определить переменную publi c где-нибудь в вашем проекте, например
publi c stati c var user: NSDictionary = [:]
Затем вы можете напрямую присвоить свой ответ json в качестве словаря этой переменной и использовать его в своем проекте.
AF.request(URL(string: "someurl")!,
method: .get,
headers:AppConstants.headers)
.validate(statusCode:200..<300)
.validate(contentType:[AppConstants.contentTypeJson])
.responseJSON { (response) in
switch response.result{
case .success(let data):
guard let json = data as? [String:AnyObject] else {
return
}
let isSuccess = (json["success"])?.boolValue ?? false
if isSuccess {
SomeClass.user = json["data"] as? NSDictionary ?? [:]
}else{
print("false")
}
case .failure(let error):
print("Error")
}
}
Это еще один способ сделать это с помощью Codable, Decodable
сначала создать Codable Struct
import Foundation
// MARK: - User
struct User: Codable {
let success: Bool
let message: String
let data: DataClass
enum CodingKeys: String, CodingKey {
case success
case message = "Message"
case data
}
}
// MARK: - DataClass
struct DataClass: Codable {
let name, age, country: String
}
, затем вы можете преобразовать свой ответ непосредственно в кодируемый объект
AF.request(URL(string: "someurl")!,
method: .get,
headers:AppConstants.headers)
.validate(statusCode:200..<300)
.validate(contentType:[AppConstants.contentTypeJson])
.responseJSON { (response) in
switch response.result{
case .success(let data):
let decoder = JSONDecoder()
do {
SomeClass.User= try decoder.decode(User.self, from: data)
//this time user should be public static var user:User?
} catch {
print(error.localizedDescription)
}
case .failure(let error):
print("Error")
}
}