簡體   English   中英

如何在swift 5中將.txt文件json讀入字典

[英]How to read a .txt file json into dictionary in swift 5

嗨,我在以下結構中有一個 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

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

您需要先訪問文檔文件夾,然后附加您的文件名並檢查該路徑上是否存在文件,如下所示..

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”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM