【问题标题】:How to parse JSON response to Model struct from Alamofire in Swift 5?如何在 Swift 5 中解析来自 Alamofire 的模型结构的 JSON 响应?
【发布时间】:2021-08-10 21:49:16
【问题描述】:

我尝试使用 Alamofire 发布 mysql 数据库并成功,但我的响应似乎不是 json,我想将响应值传递给模型结构。我试过这段代码。哪里错了? 如果您能提供帮助,我将不胜感激。

 func register(registerModel:RegisterResponse,completion:@escaping (RegisterModel?)->() ){
    let parameters: [String: Any] =
    [
        "email": "\(registerModel.email)",
        "password": "\(registerModel.password)",
        "first_name": "\(registerModel.first_name)",
        "last_name": "\(registerModel.last_name)",
    ]
   
    AF.request(registerUrl,method: .post,parameters: parameters,encoding: URLEncoding.httpBody,headers: nil).responseJSON(){ response in
       //debugPrint(response)
        switch response.result{
        
        case .success(let data):
        
                if response.data != nil {
                    
                    print(data)
                    completion(data as? RegisterModel)
                    
                }
            
          
        case .failure(let err):
            print(err.localizedDescription)
        }
    }
    
}

输出:

{
result = "account already exists";
tf = 0;
verificationCode = "<null>";
}

【问题讨论】:

  • @JoakimDanielson 不,我看看这个问题。我想传递值我自己的班级,这个问题很老,swift 5有一个答案,它没有解决我的问题
  • 但是您显然做错了,因为您不能将 data 转换为您的自定义类型。你需要解码它,因为它是 json.再看看链接的问题
  • 第二个答案可能会解决你的问题stackoverflow.com/questions/31982513/…

标签: swift alamofire swift5


【解决方案1】:

假设您的RegisterResponseDecodable,只需使用responseDecodable

AF.request(registerUrl, method: .post, parameters: parameters, encoding: URLEncoding.httpBody)
  .responseDecodable(of: RegisterResponse.self) { response in
    // Handle response.
  }

【讨论】:

    【解决方案2】:

    试试这个

    AF.request(registerUrl, method: .post, parameters: parameters, encoding: JSONEncoding.default) .responseJSON { (response) in
        print(response)
    }
    

    【讨论】:

    • 我试过这个方法。输出是一样的。你能看看我编辑的问题,我添加了输出。我不能使用输出变量。我想将此值传递给模型结构
    • @life4 输出表明 POST 方法正在工作,您从服务器得到的响应是 account already exists 如果这是问题,请尝试使用另一封电子邮件注册,否则如果您想要响应要映射到结构的对象,您可能希望创建该结构并符合 Codable,尝试按照以下说明替换 completion(data as? RegisterModel)hackingwithswift.com/articles/119/codable-cheat-sheet,然后将新对象传递给 completion 块而不进行强制转换。跨度>
    猜你喜欢
    • 2014-11-24
    • 1970-01-01
    • 2021-07-22
    • 2016-07-12
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 2018-09-10
    相关资源
    最近更新 更多