【发布时间】:2021-06-26 22:54:12
【问题描述】:
注意:我在step 2.3 here,我正在努力将stripe与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")
//...
【问题讨论】:
-
你能发布一个链接或一些关于你要解析的 json 数据的信息吗? JSONSerialization 应该可以工作,但它也取决于你的 json 的结构。
-
您还应该仔细检查您的 JSON 是否有效。我通常建议将其传递给jsonlint.com。无效的 JSON 会给你这个错误。另外,将
try?替换为try,系统将向您抛出一个错误,告诉您问题所在。try?明确表示您想丢弃所有有用的错误消息。 -
你确定你的第二个代码截图是它失败的原因吗?如果您没有单独检查,原因可能是监护声明中的任何后续句子。
-
@Rikh 是的,我单独检查过。我确定。
标签: ios swift firebase stripe-payments