Swift NSJSONSerialization错误。代码=3840“;字符0周围的值无效
Swift NSJSONSerialization错误。代码=3840“;字符0周围的值无效,swift,Swift,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 va
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")
}
是有效的JSON编号,因此如果.AllowFragments
选项已设置。JSON字符串必须用引号括起来:
(详情请参阅):
在Swift字符串文字中,这些引号用
反斜杠:
let str = "\"abc\"" // OK!
let strData = str.dataUsingEncoding(NSUTF8StringEncoding)
// ...
请检查邮递员的回复。我只是通过检查json响应是正确格式还是html格式来解决问题,如果使用swift,请使用以下代码行检查:
let contentType = response.response?.allHeaderFields["Content-Type"] as? String
内容类型将不会显示为:“application/json”。这意味着来自服务器的响应不是有效的JSON字符串。我收到了相同的错误。结果发现错误在请求中。下面的语法修复了向请求添加参数时出现的问题
request.setValue("Value", forHTTPHeaderField: "Key")
非常感谢。知道了!
let contentType = response.response?.allHeaderFields["Content-Type"] as? String
request.setValue("Value", forHTTPHeaderField: "Key")