swift – NSJSONSerialization错误. Code = 3840“字符0周围的值无效

前端之家收集整理的这篇文章主要介绍了swift – NSJSONSerialization错误. Code = 3840“字符0周围的值无效前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用类似“abc”的字符串但使用“123”成功时出现NS JSONSerialization.JSONObjectWithData错误

我不知道为什么.

错误日志

  1. 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.}

  1. //var str = "123" // ok
  2. var str = "abc" // error
  3. let strData = str.dataUsingEncoding(NSUTF8StringEncoding)
  4.  
  5. if let d = strData {
  6. let urlStr = String(data: d,encoding: NSUTF8StringEncoding)
  7.  
  8. do {
  9. let json = try NSJSONSerialization.JSONObjectWithData(d,options: NSJSONReadingOptions.AllowFragments)
  10. } catch let e {
  11. print(e)
  12. }
  13. } else {
  14. print("data error")
  15. }
  1. 123

是一个有效的JSON编号,因此如果.AllowFragments,则可以将其读作JSON
选项已设置. JSON字符串必须用引号括起来:
(详见http://www.json.org):

  1. "abc"

在Swift字符串文字中,这些引号是使用转义的
反斜线:

  1. let str = "\"abc\"" // OK!
  2. let strData = str.dataUsingEncoding(NSUTF8StringEncoding)
  3. // ...

猜你在找的Swift相关文章