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