带重音的JSON序列化

时间:2014-10-11 02:59:55

标签: ios json swift xcode6

当我尝试使用重音符号获取远程JSON文件时,我遇到了麻烦。如果我取消JSON文件的重音,它可以很好地工作,但是如果我保留它们,我就会出错。由于您可以验证,我尝试使用“NSUTF8StringEncoding”,但是,它不能正常工作。有什么想法吗?

func getJSON(completionHandler: ((NSArray!, NSError!) -> Void)!) -> Void

{
    var urlAux = "http://www.xxxx.com/downloads/example.json"
    var urlAuxUTF8 = urlAux.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

    let url: NSURL = NSURL(string: urlAuxUTF8!)
    let ses = NSURLSession.sharedSession()
    var enc:NSStringEncoding = NSUTF8StringEncoding
    var error: NSError?

    let content = NSString.stringWithContentsOfURL(url, usedEncoding:&enc, error:&error)

    if (error != nil)
    {
        NSLog("error: %@", error!)
        exit(-1)
    }
    else
    {
        let json = NSJSONSerialization.JSONObjectWithData(content.dataUsingEncoding(enc)!, options:nil, error: &error) as NSDictionary

        if (error != nil) {
            return completionHandler(nil, error)
        } else {
            return completionHandler(json["express"] as [NSDictionary], nil)
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你有完美的NSData,你将它转换为字符串并且必须猜测编码,然后再将它转换为NSData。使用直接获取NSData的函数,无需转换为字符串,并将其原样传递给NSJSONSerialization。