Swift2:读取以UTF-8编码的本地json文件

时间:2015-10-29 10:46:13

标签: ios json swift swift2 nsjsonserialization

如何使用库NSJSONSerialization读取日文json文件?

我试过(使用Swift2的代码):

let filePath = NSBundle.mainBundle().pathForResource("myfile",ofType:"json")
let optData =  NSData(contentsOfFile:filePath!)

do {
    let abc = try NSJSONSerialization.JSONObjectWithData(optData! as NSData, options: .MutableContainers) as! NSDictionary
    print("data read: \(abc)")
} catch {
    print("error: \(error)")
}

但是abc中的数据是不可读的。所以我的问题是:如何更改NSData对象的编码。

顺便说一句,如果我将NSData对象转换为NSString,则日语json是完美编码的:

let stringData = NSString(data: optData!, encoding: NSUTF8StringEncoding)

谢谢

1 个答案:

答案 0 :(得分:2)

JSON文件始终采用某种Unicode编码。 NSJSONSerialization会自动处理所有有效的可能性(包括UTF-8)以及stringData看起来合理的事实表明编码不是问题。

查看您的代码,出现问题的可能性是:

  • 数据无效JSON。尝试将其粘贴到http://jsonlint.com以查看是否正常。
  • JSON中的顶级对象是一个数组,在这种情况下,转换为NSDictionary将失败。使用if let .... as? NSDictionary而不是强制转换,如果失败,请尝试将其强制转换为NSArray