Swift 3.0 - 从XCode包中读取.JSON文件

时间:2017-08-26 05:20:58

标签: ios json swift3 xcode8 bundle

我在项目中保存了这些.plist和.json文件。我可以从Xcode读取.plist文件。虽然无法在Swift 3.0上读取.json文件。我使用下面的代码片段来获取此信息。但不能这样做。是否可以从.json文件中获取数据? 请分享您的建议。

可以获取PLIST文件

let plistFile = Bundle.main.path(forResource: "content", ofType: "plist")
let dictPlist = NSDictionary(contentsOfFile: plistFile!)
print(dictPlist ?? "")

无法获取JSON文件

    if let filepath = Bundle.main.path(forResource: "fruits", ofType: "json") {
        do {
            let contents = try String(contentsOfFile: filepath)
            print(contents)
        } catch {
            print("Fetched")
        }
    } else {
        print("not found")
    }

1 个答案:

答案 0 :(得分:2)

Swift 4解决方案

如果找到了正确的文件路径,则文件编码可能存在问题。您应该明确提供json文件的实际编码。

要检查文件的编码,请在XCode中打开文件,然后查看右侧栏中的文件检查器:

Encoding of the file

if let filePath = Bundle.main.path(forResource: "data", ofType: "json"),
   let data = NSData(contentsOfFile: filePath) {
  do {

    // here you have your json parsed as string:
    let jsonString = try? String(contentsOfFile: filePath, encoding: String.Encoding.utf8)

    // but it is better to use the type data instead:
    let jsonData = try JSONSerialization.jsonObject(with: data as Data, options: JSONSerialization.ReadingOptions.allowFragments)
  }
  catch {
    //Handle error
  }
}