无法使用NSJSONSerialization解析JSON

时间:2015-07-29 08:41:25

标签: ios swift swift2

无法解析JSON接收错误NSCocoaErrorDomain Code = 3840 我的JSON已经过适当的验证,并且是utf-8编码的。我正在使用此代码

let request: NSURLRequest = NSURLRequest(URL: url)

let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) ->  Void in
    print(data)
    do {
    let jsonDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options:[NSJSONReadingOptions()]) as? [String: AnyObject]
    print(jsonDictionary)

    } catch {
        print(error)
    }
})
dataTask?.resume()

2 个答案:

答案 0 :(得分:1)

您的json是集合类型[AnyObject],而不是[String: AnyObject]。请参阅下面的代码。

let jsonDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options:[]) as? [AnyObject]

希望这有帮助!

答案 1 :(得分:0)

这段代码完全适用于我做了一点重构,以便更容易阅读并添加一个URL,例如:

let charAsString = "1f44d" // code in variable
println("\u{\(charAsString)}") // not working

(此代码用Swift 2.0编写)

它给出了以下输出:(我删除了类型转换以确保获得某些东西)

let request = NSURLRequest(URL: NSURL(string: "https://api.ipify.org?format=json")!)
let session = NSURLSession.sharedSession()
let dataTask = session.dataTaskWithRequest(request) { (data, _, _) in
    print(data)
    do {
        let jsonDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options:[])
        print(jsonDictionary)
    } catch {
        print(error)
    }
}
dataTask.resume()

所以这必须来自您要解析的数据。你能不能把它交给我们所以我们可以试着找出什么是错的?