我非常喜欢swift,我正在尝试解析JSON格式的URL。我收到了这个对象,但它被作为一堆数字返回。如何将这些数字解码为实际对象。
let requestURL: NSURL = NSURL(string: "http://api.themoviedb.org/3/search/movie?api_key=06f4ca4cd5f26636e0ac8eebce5b8773&query=fight+club&callback=testing&_=1456113299076")!
let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(urlRequest) {
(data, response, error) -> Void in
let httpResponse = response as! NSHTTPURLResponse
let statusCode = httpResponse.statusCode
if (statusCode == 200) {
if (statusCode == 200) {
do{
print(data)
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)
}catch {
print("Error with Json: \(error)")
}
}
}
}
task.resume()
答案 0 :(得分:0)
错误消息
时发生错误错误Domain = NSCocoaErrorDomain Code = 3840“看起来像是一个东西 '是'但不在角色0周围。“
这意味着字符串从一开始就是无效的JSON(格式错误)。
<强>解决方案:强>
由于某些不可理解的原因,JSON字符串包含在testing(...)
块中。
您需要从第9个字符(索引8)修剪数据,直到倒数第二个。
do{
let trimmedData = data!.subdataWithRange(NSRange(location:8, length: data!.length - 9))
let json = try NSJSONSerialization.JSONObjectWithData(trimmedData, options: .AllowFragments)
print(json)
}
...
PS:在完成版块中,强烈建议您在获取nil
之前检查错误是否为statusCode