首页 > 解决方案 > JSONSerialization.jsonObject 返回零?

问题描述

注意:我在这里是第 2.3 步,我正在努力将条带与 Firebase 集成。

我有以下守卫让,这将失败。由于 json const,它失败了。

          guard let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String : Any], let accountURLString = json["url"] as? String, let accountURL = URL(string: accountURLString) else {
                  // handle error
            print(": jsonfdshkfdbsh :")
                return
          }

不幸的是,其中的以下声明失败了:

let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String : Any]

线路有什么问题?我怎样才能让它工作?


更新:(我尝试过没有奏效

            let data = data as Data?
            print(data, " datavar")//has a value (not nil)
            let json = try? JSONSerialization.jsonObject(with: data!, options: []) as? [String : Any]
            print(json, " jsonvar") //nil
            let accountURLString = json!["url"] as? String
            let accountURL = URL(string: accountURLString!)

更新 2:

我一直在想并调查问题是否可能是request变量路径可能无效(?)。但是,我的测试(我知道数据库中存在一个值)没有产生(工作)任何结果。

    if let url = URL(string: backendAPIBaseURL)?.appendingPathComponent("stripe_customers/IYNpofaWUFXfobmFRLMLIEZXxqN2") {// usually the string is: "onboard-user"

       var request = URLRequest(url: url)
      request.httpMethod = "POST"
      
        print(URLSession.shared.dataTask(with: request), "<-- ay un problem?")
        print(request, " this was the request value")
        
        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
            print("does thsi run??? ", data)
            
            let data: Data = data!// as Data?
            print(data, " ttekjfdsjklfhdas")
            //...

标签: iosswiftfirebasestripe-payments

解决方案


这个问题原来与Update 2相关联。这request是问题所在。

我结束了将代码更改为以下内容,该代码有效:

    func createStripeConnectAccount(uid: String, completion: @escaping(String?, String?) -> Void)  { //accountID, Error

    let parameters: [String:Any] = [:]

    let url = "https://us-central1-name-fhdskj.cloudfunctions.net/createConnectAccount"

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

        switch response.result {
            case .success(let dict):
                print(dict)
                let successDict: [String: Any?] = dict as! [String: Any?]
                let body = successDict["body"] as! [String: Any?]
                let acctNum = body["success"] as! String
                
                print(acctNum, "<-- link did it twerk?")

                completion(acctNum, nil)
            case .failure(let error):
                print(error.localizedDescription)
                completion(nil, error.localizedDescription)
        }
    }
}


func createAccountLink(accountID: String, completion: @escaping(String?, String?) -> Void)  { //url, Error

    let parameters: [String:Any] = ["accountID": accountID]

    let url = "https://us-central1-name-fdsad.cloudfunctions.net/createStripeAccountLink"

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

        switch response.result {
            case .success(let dict):
                print(dict)
                let successDict: [String: Any?] = dict as! [String: Any?]
                let body = successDict["body"] as! [String: Any?]
                let link = body["success"] as! String
                
                print(link, "<-- link did it twerk?")

                completion(link, nil)
            
        case .failure(let error):
                print(error.localizedDescription)
                completion(nil, error.localizedDescription)
        }
    }
    
    
}

您必须集成 Alomofire Pod。


推荐阅读