如何使用 responseDecodable 而不是使用 Alamofire 6 的 responseJSON

How to use responseDecodable instead of responseJSON using Alamofire 6

由于使用 Alamofire 时 JSON 序列化失败,我的一个应用程序不再工作。

'responseJSON(queue:dataPreprocessor:emptyResponseCodes:emptyRequestMethods:options:completionHandler:)' is deprecated: responseJSON deprecated and will be removed in Alamofire 6. Use responseDecodable instead.

对于具有以下行的代码

AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: [:]).responseJSON { response in.. } 

更改为

AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: [:])
 .responseDecodable { response in... }

然后我得到错误

Generic parameter 'T' could not be inferred

所以我添加以下内容

AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: [:])
  .responseDecodable(of: ResponseType.self) { response in.. } 

我收到错误

Cannot find 'ResponseType' in scope

有人有什么建议吗?

.responseJSON 不同,returns 字典或数组 .responseDecodable 将 JSON 反序列化为结构或 类。

您必须创建一个符合 Decodable 的适当模型,在您的代码中它由 ResponseType(.self) 表示。

success 案例的关联值是模型的根结构。

已弃用(黄色警告)表示 API 仍在运行。

旁注:JSON 字典是 never [String: Any?] 值始终是 non-optional.