首页 > 解决方案 > 如何在swift 5中将.txt文件json读入字典

问题描述

嗨,我在以下结构中有一个 json

{
  "SCALE085": {
    "Fingerprints": [
      {
        "FingerImpressionImage": {
          "BinaryBase64ObjectBMP": "aaaaaaaaaa"
        }
      },
       {
        "FingerImpressionImage": {
          "BinaryBase64ObjectBMP": "bbbbbbbbbb"
        }
      },
     {
        "FingerImpressionImage": {
          "BinaryBase64ObjectBMP": "cccccccccc"
        }
      },
       {
        "FingerImpressionImage": {
          "BinaryBase64ObjectBMP": "dddddddddd"
        }
      }

    ]
  }
}

我的 json 保存在这个位置

file:///var/mobile/Containers/Data/Application/4D2740FA-B119-46EB-8EDD-5FEFA11CFEC1/Documents/TEstApp/ExportDemo/swift_fingerprints_0_2020.03.02_01.06.10.txt

我试图实现的是在如下数组中获取键“BinaryBase64ObjectBMP”的值

["aaaaaaaaaa","bbbbbbbbbb","cccccccccc","dddddddddd"]

我该怎么做呢?

我已将完整文件路径传递给下面的函数,但它崩溃了

 func readFromFile(file:URL){
        let url = file
        do {
            let jsonData = try Data(contentsOf: url)
            let json = try JSONSerialization.jsonObject(with: jsonData) as! [[[String: Any]]]
            print(json)

        }
        catch {
            print(error)
        }
    }

崩溃说没有这样的文件

file:///var/mobile/Containers/Data/Application/4D2740FA-B119-46EB-8EDD-5FEFA11CFEC1/Documents/TEstApp/ExportDemo/swift_fingerprints_0_2020.03.02_01.06.10.txt

但我也可以看到文件夹中的文件

标签: iosarraysswift

解决方案


您需要先访问文档文件夹,然后附加您的文件名并检查该路径上是否存在文件,如下所示..

func getFileDocumentDirectory(name: String) -> URL? {
    let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
    let fileURL = documentsDirectory.appendingPathComponent(name)
    if FileManager.default.fileExists(atPath: fileURL.path) {
        do {
            return fileURL
        } catch {
            return nil
        }
    }
    return nil
}

在您的情况下,文件名将是“swift_fingerprints_0_2020.03.02_01.06.10.txt”。


推荐阅读