Arrays 如何将json数组转换为对象数组Alamofire?
我在api中有这样的数组:Arrays 如何将json数组转换为对象数组Alamofire?,arrays,json,swift,Arrays,Json,Swift,我在api中有这样的数组: [{ data = ""; datetime = "23.07.2020 12:09"; id = 340593; status = "My current task is"; },...] 我创建了这样的结构: struct RemarksModel { let id:Int let status,datetime:String let data:S
[{
data = "";
datetime = "23.07.2020 12:09";
id = 340593;
status = "My current task is";
},...]
我创建了这样的结构:
struct RemarksModel {
let id:Int
let status,datetime:String
let data:String?
}
我在此提出请求:
AF.request(URLRequest(url:Pathes.init(endpoint: "notepad/\(noteModel?.id ?? 0)/documentation").resourseUrl),
interceptor: CallInterceptor.init(method:HTTPMethod.get)).responseJSON(completionHandler: { (response) in
print(response.description)
switch response.result{
case .success(let array):
let remarksData = array as? [RemarksModel]
let json = response.data as? [RemarksModel]
print(json?.count)
// if remarksData?.count ?? 1 > 0{
// self.remarksArray += remarksData!
// self.tableView.reloadData()
// }
case .failure(let error):
print(error.localizedDescription)
}
})
问题是我无法将此数组转换为模型对象的数组。当我尝试将所有接收到的数据添加到数组时,我的应用程序崩溃,因为我的数组为零,尽管日志中有json。也许我必须使用另一种方法将接收到的json数组转换为对象数组?您可以将
Codable
协议添加到remarkmodel
中,并使用.responseData
而不是.responseJSON
.responseData { response in
switch response.result {
case let .success(data):
do {
let result = try JSONDecoder().decode([RemarksModel].self, from: data)
// success
} catch {
print("decoding error:\n\(error)")
// error
}
case let .failure(error):
// error
}
}
您可以将
Codable
协议添加到remarkmodel
中,并使用.responseData
而不是.responseJSON
.responseData { response in
switch response.result {
case let .success(data):
do {
let result = try JSONDecoder().decode([RemarksModel].self, from: data)
// success
} catch {
print("decoding error:\n\(error)")
// error
}
case let .failure(error):
// error
}
}
确认
remarkmodel
至Codable
(或仅可解码
)协议后,您可以直接使用.responsedCodable
函数,而不是.responseData
或.responseJSON
确认
remarkmodel
至Codable
(或仅可解码
)协议后,您可以直接使用.responsedCodable
函数,而不是.responseData
或.responseJSON