如何在文件管理器中快速读取 json 文件?
Posted
技术标签:
【中文标题】如何在文件管理器中快速读取 json 文件?【英文标题】:how to read json file in filemanager swift? 【发布时间】:2020-01-23 03:40:29 【问题描述】:我尝试读取 zip 文件中的 json 文件,在我使用 alamofire 下载的文件之后,我使用 SSZipArchive 提取了文件。我从 zip 中得到 2 个 json 文件,但我无法读取 json 的内容。我如何才能读取该文件?
这是我的代码:
@IBAction func downloads(_ sender: UIButton)
let urlString : String = ""
let destination = DownloadRequest.suggestedDownloadDestination(for: .documentDirectory)
Alamofire.download(urlString, method: .get, encoding: URLEncoding.default, to: destination)
.downloadProgress(queue: DispatchQueue.global(qos: .utility)) progress in
print("Progress: \(progress.fractionCompleted)")
print(progress)
.validate request, response, temporaryURL, destinationURL in
return .success
.responseJSON response in
print(response)
debugPrint(response)
print(response.destinationURL?.path)
print(response.destinationURL?.absoluteString)
let fileName = response.destinationURL!.path
guard let unzipDirectory = self.unzipPath(fileName: fileName) else return
let success = SSZipArchive.unzipFile(atPath: (response.destinationURL?.path)!, toDestination: unzipDirectory)
print(success)
print(unzipDirectory)
if !success
return
var items: [String]
do
items = try FileManager.default.contentsOfDirectory(atPath: unzipDirectory)
for item in items
print("jsonFile: \(item)")
catch
return
func unzipPath(fileName:String) -> String?
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString
let pathWithComponent = path.appendingPathComponent("\(fileName)")
do
try FileManager.default.createDirectory(atPath: pathWithComponent, withIntermediateDirectories: true, attributes: nil)
catch
return nil
return pathWithComponent
这个截图回应:
【问题讨论】:
【参考方案1】:不确定,但对于 JSON 可读,您可以调用此方法
func readJson()
let url = Bundle.main.url(forResource: "input_ios", withExtension: "json")
let data = NSData(contentsOf: url!)
do
let object = try JSONSerialization.jsonObject(with: data! as Data, options: .allowFragments)
if let dictionary = object as? [String: AnyObject]
if let Timeline = dictionary["timeline"] as? [[String:Any]]
timelArr = Timeline
feedTbl.reloadData()
catch
并更改文件名(您的文件名),然后获取数据。 这里我显示在 tableview 中。
if let Timeline = dictionary["timeline"] as? [[String:Any]]
文件中有时间轴键,因此可以更改文件中的任何内容。
【讨论】:
【参考方案2】:试试下面的
获取该json的路径
let path = Bundle.main.path(forResource: "test", ofType: "json")
转化为数据
let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe)
解码成反射模型
//make a model to reflect your json and place it instead of "CustomModel".self
let model = JSONDecoder().decode(CustomModel.self, from: data)
希望这会有所帮助!
【讨论】:
以上是关于如何在文件管理器中快速读取 json 文件?的主要内容,如果未能解决你的问题,请参考以下文章
java中如何读取json文件,在本地有E:/a.json文件,想读取这个json文件里面的内容,怎样实现