【发布时间】:2015-11-17 23:11:50
【问题描述】:
这可能是我遇到的最奇怪的事情。我们已经决定继续前进,但我想发表一篇文章来尝试理解。
所以我从我们的服务器获取了一些 JSON 数据,除了字符串“OK”之外,一切似乎都运行良好。
这里是函数:
func getRequest(token:String, url:String, callback:(NSDictionary) -> ()){
let request = NSMutableURLRequest(URL: NSURL(string: url)!)
request.HTTPMethod = "GET"
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if data != nil && response != nil{
do{
let responseTest = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary
if responseTest != nil{
let response:NSDictionary = responseTest!
callback(response)
}
} catch let error as NSError{
print("A JSON parsing error occured: \(error)")
}
} else {
callback(NSDictionary())
}
}
task.resume()
}
数据从调用中返回,然后响应正确解析所有数据,除了状态“OK”返回时无法读取数据。我们将状态更改为“成功”,它工作得很好。我们测试了一堆不同的词,它们都工作得很好,除了“OK”这个词总是返回无法读取数据。我见过的最奇怪的事情。现在我们将进入“成功”状态,但我就是无法忘记这一点。为什么?!?!这2个字母有什么不同?有其他人遇到过这种情况,或者只是对我似乎缺乏了解吗?快把我逼疯了。
这是我们的一次尝试中的 JSON:
{"username":"gang_su","status":"0K","status2":"这更OK","status3":"OK OK OK","status4":"OK", "status5":true,"status6":123,"status7":12345.678,"status8":[1,2,3,4],"status9":[1.02,2.02,3.02,4.02]}
谢谢!!
【问题讨论】:
-
听起来很疯狂,你能发布你的原始 json 吗?
-
是的。我将 JSON 添加到帖子中。
-
请注意,
'OK' 有单引号。请参阅:Introducing JSON。 -
很抱歉。我从一封电子邮件中获取了那个 JSON……不知道为什么会有单引号。以为我的朋友直接从代码中复制了它。我现在使用当前来自服务器的 JSON 对其进行了更新。我直接从浏览器的查看源页面复制了它。
-
太好了,更新的 JSON 是有效的。但是那个 JSON 并没有体现出你描述的问题。如果没有reproducible example 的问题,我们将无法帮助您。在回答您的问题时,“OK”绝对没有什么特别之处,而是在您的代码(或服务器响应)中的其他地方有其他东西。