swift - Swift Vapor:如何读取 JSON 文件?
问题描述
我正在使用 Vapor,这是用于创建 Web 服务器的服务器端 Swift 4 框架。我有一个要应用的迁移,它从 JSON 文件中读取;但是,我在此看到的大多数(如果不是全部)Swift 教程都表明 using Bundle
,据我所知,在开发服务器端 swift 应用程序时不可用,这意味着这样的尝试不起作用:
if let path = Bundle.main.url(forResource: "myFile", withExtension: "json") {
...
这引出了一个问题,给定相对文件路径,我如何使用服务器端 Swift 读取文件?
解决方案
傻我。Vapor 公开了一个DirectoryConfig
对象,您可以从中检索应用程序的工作目录。为了解析一个文件,它变成:
let directory = DirectoryConfig.detect()
let configDir = "Sources/App/Configuration"
do {
let data = try Data(contentsOf: URL(fileURLWithPath: directory.workDir)
.appendingPathComponent(configDir, isDirectory: true)
.appendingPathComponent("myFile.json", isDirectory: false))
// continue processing
} catch {
print(error)
}
推荐阅读
- python - 将链接列表拆分为域列表
- machine-learning - 有没有办法不用打开网页就可以用云服务训练机器学习模型?
- php - 我的实体上带有注释 PHP8 的语法错误,但我遵循了 API 平台的文档
- swift - SwiftUI:是否可以让用户缩放使用 PHpicker 选择的图像?
- android-studio - 如何从主要活动中替换片段
- c# - 除了 Unity 中的默认字符串和精灵值外,如何向 Dropdown OptionData 添加更多 UI 元素?
- ms-word - 如何使用 R Markdown 在 word 中获得彩色背景?
- python - 使用 Flask(SVG 标记)将传单地图上传到网络时出现问题
- c# - 无法从程序集“WebDriver,版本=4.0.0.0,文化=中性,PublicKeyToken=null”加载类型“OpenQA.Selenium.Internal.IWrapsElement”
- python - 迭代 yfinance 代码列表的最快方法是什么?