【发布时间】:2017-11-21 09:51:16
【问题描述】:
执行以下请求时出现以下错误。
Error Domain=NSCocoaErrorDomain Code=3840 "JSON 文本没有开始 带有数组或对象以及允许未设置片段的选项。” UserInfo={NSDebugDescription=JSON 文本不是以数组开头或 允许未设置片段的对象和选项。}
@IBAction func onPostTapped(_ sender: Any) {
let parameters = ["Name": "Yogesh", "Mobile": "1212121212", "DOB": "1122/12/12", "Address": "qwqwqwqw"]
//https://jsonplaceholder.typicode.com/posts
guard let url = URL(string: "http://localhost/webservice/Register.php") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return }
request.httpBody = httpBody
let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
if let response = response {
print(response)
}
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
} catch {
print(error)
}
}
}.resume()
}
什么可能导致这个问题?
【问题讨论】:
-
我猜错误是
JSONSerialization.jsonObject()的catch?介意给我们看let dataStr = String(data: data, encoding:.utf8)(并打印出来)?但是我猜dataStr不是JSON Valid(网上有JSON Validator,查一下)。 -
> 200 SO 搜索结果为 “JSON 文本没有以数组或对象开头以及允许未设置片段的选项”,它们都没有帮助??
-
我尝试了那个解决方案,但我是新手,所以无法理解这个解决方案@martin。