Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将json数组转换为对象数组Alamofire?_Arrays_Json_Swift - Fatal编程技术网

Arrays 如何将json数组转换为对象数组Alamofire?

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

我在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: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