我一直在尝试用Xcode Swift 3和4中的丹麦字母解码json文件很长时间。只要它不需要阅读å,ø,å等丹麦字母,它就可以正常工作。 这是我的代码:
let myFile = Bundle.main.path(forResource: fileName, ofType: "json")
let url = URL(fileURLWithPath: myFile!)
let data = try! Data(contentsOf: url)
let json = try! JSONSerialization.jsonObject(with: data)
我可以像这样从文件中提取数据
let navn = JSON(json)["navn"].string!
但是......如果我的文件包含类似
的内容"navn":"Gentofte Sø"
应用程序因“ø”而崩溃。 我知道它应该是utf8解码的,但我似乎无法弄清楚如何做到这一点,因为到目前为止我看到的所有示例都是来自url的数据,og是字符串格式的虚拟数据。
答案 0 :(得分:0)
我不得不说我正在使用firebase数据库,因此,在这种情况下我找到了这样的解决方案
if let path = Bundle.main.url(forResource: fileName, withExtension: "json") {
do {
let jsonData = try Data(contentsOf: path, options: .mappedIfSafe)
do {
let responseStrInmacOSRoman = String(data: jsonData, encoding: String.Encoding.macOSRoman)
guard let modifiedDataInUTF8Format = responseStrInmacOSRoman?.data(using: String.Encoding.utf16) else {
print("could not convert data to UTF-8 format")
return
}
if let jsonResult = try JSONSerialization.jsonObject(with: modifiedDataInUTF8Format, options: JSONSerialization.ReadingOptions(rawValue: 0)) as? NSDictionary {
do {
if let gpsMapped = jsonResult.value(forKey: "gpsmapped") as? String {
ref?.child("myFirstChild").child(fileName).child("mySecondchild").setValue(gpsMapped)
alData += "," + gpsMapped
print(gpsMapped)
}
}
} catch {}
}
catch{}
}