NSJSONSerialization.JSONObjectWithData
使用类似"abc"的字符串时出错,但使用"123"成功
我不知道为什么。
错误日志
2015-11-04 17:42:02.997 SwiftJsonDemo[27196:2701028] Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}
代码
//var str = "123" // ok
var str = "abc" // error
let strData = str.dataUsingEncoding(NSUTF8StringEncoding)
if let d = strData {
let urlStr = String(data: d, encoding: NSUTF8StringEncoding)
do {
let json = try NSJSONSerialization.JSONObjectWithData(d, options: NSJSONReadingOptions.AllowFragments)
} catch let e {
print(e)
}
} else {
print("data error")
}
123
是一个有效的JSON编号,因此如果.AllowFragments
选项。JSON字符串必须用引号括起来:(参见http://www.json.org详细信息):
"abc"
在Swift字符串文字中,这些引号用反斜杠:
let str = ""abc"" // OK!
let strData = str.dataUsingEncoding(NSUTF8StringEncoding)
// ...
如果使用swift,请使用以下代码行进行检查:
let contentType = response.response?.allHeaderFields["Content-Type"] as? String
内容类型不会是:"application/json"。这意味着来自服务器的响应不是有效的JSON字符串。
请在Postman中检查响应。我只是通过检查json响应是正确的格式还是html格式来解决问题
我得到了同样的错误。原来错误在请求中。以下语法修复了向请求添加参数时的问题。
request.setValue("Value", forHTTPHeaderField: "Key")