JSONSerialization.jsonObject 返回零?
JSONSerialization.jsonObject returning nil?
注意:我在step 2.3 here,我正在努力将stripe与firebase集成。
我有以下 guard let,它会失败。由于 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!)
更新二:
我一直在想和调查问题是否可能是 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")
//...
问题原来与 更新 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。
注意:我在step 2.3 here,我正在努力将stripe与firebase集成。
我有以下 guard let,它会失败。由于 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!)
更新二:
我一直在想和调查问题是否可能是 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")
//...
问题原来与 更新 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。