NSJSON系列化错误。代码 = 3840 "字符 0 周围的值无效



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")

最新更新