我正在try 用AlamoFire从服务器上解析数据.
(我已经试了两天了,但失败了.) 我怎样才能用Alamofire得到Json数组可编码类型?
接口:不,不,不.
[ { "姓名":"无名氏", "Email":"johndoe@gmail.com", "type":"Lattee", "Size":"中等" }, { "姓名":"无名氏", "Email":"doe@gmail.com", "type":"Lattee", "Size":"小" } ]
这是我的代码
在Model.SWIFT中
struct OrderList : Codable{
var list : [Order]
}
enum coffeeType: String, Codable{
case cappuccino
case lattee
case espressino
case cortado
}
enum coffeeSize: String, Codable{
case small
case medium
case large
enum CodingKeys: String, CodingKey {
case small = "s"
case medium = "m"
case large = "l"
}
}
struct Order: Codable {
let email: String!
let name : String!
let size : coffeeSize!
let type : coffeeType!
enum CodingKeys: String, CodingKey{
case name = "Name"
case email = "Email"
case type = "Type"
case size = "Size"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
email = try values.decodeIfPresent(String.self, forKey: .email) ?? ""
name = try values.decodeIfPresent(String.self, forKey: .name) ?? "Guest"
size = try values.decodeIfPresent(coffeeSize.self, forKey: .size) ?? .small
type = try values.decodeIfPresent(coffeeType.self, forKey: .type) ?? .lattee
}
}
struct Resource<T: Codable> {
let url : URL
var httpMethod: HTTPMethod = .get
}
我用不同的格式定义了它,比如响应数据、响应JSON和响应编码,但是我总是得不到任何东西,或者缺少一些东西. 我知道如何使用ResponseJSON进行解析.但我想试着通过应用可编码的. 这太难了.
-数据解析
func load<T>(resource: Resource<T>, completion: @escaping (Result<T, NetworkError>) -> Void) {
let call = AF.request(myurl,method: resource.httpMethod, parameters: nil).responseJSON{ response in
switch response.result {
case .success(let data):
if let JSON = response.value {
do{
let dataJson = try JSONSerialization.data(withJSONObject: JSON, options: [])
let getInstanceData = try JSONDecoder().decode(T.self, from: dataJson)
print(getInstanceData)
completion(.success(getInstanceData))
}catch{
print(error)
}
}
case .failure(_):
break
}
}
}