【问题标题】:Swift2 : read a local json file encoded in UTF-8Swift2:读取以 UTF-8 编码的本地 json 文件
【发布时间】:2016-01-29 11:15:59
【问题描述】:

如何使用库 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)

谢谢

【问题讨论】:

    标签: ios json swift swift2 nsjsonserialization


    【解决方案1】:

    JSON 文件总是采用某种 Unicode 编码。 NSJSONSerialization 自动处理所有有效的可能性(包括 UTF-8),而您的 stringData 看起来合理这一事实表明编码不是问题。

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

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

    【讨论】:

    • 谢谢。我的 Json 是有效的,顶层对象不是数组。我会尝试使用 NSArray
    • @johann 你能把 JSON 放在问题中吗?此外,运行它的控制台日志。
    • 在“循环”字典并将内容打印为字符串后,它就变得可读了!谢谢
    猜你喜欢
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    相关资源
    最近更新 更多