如何将我的结构保存为 Swift 中的 JSON 文件

How to save my struct as a JSON file in Swift

这是我要在报告中使用其变量的结构。

 struct report : Codable {
    var question : String
    var AnswersChosen : [String] = [String]()
    var userCount : Int
    var hintCount : Int

我的用户输入报告,里面的变量是用户当前的问题,他们选择的选项以及他们每个问题选择错误答案的次数

var currentReport = [report]()
currentReport.append(report(question:questions[currentQuestion - 1 ],AnswersChosen:answerChosen, userCount:ActionCount, hintCount:hintButtonCount ))
            print(currentReport)

这段代码的输出可以这样看:

在我的代码中,我使用 Alamofire 将 JSON 文件发送到 Laravel。我希望能够通过 Alamofire 发送将用户输入记录为 JSON 文件的 currentReport。因此,如何将数组转换为 JSON 文件?感谢您的帮助

您可以使用 JSONEncoder:

的实例将数组编码为 Data
let encoder = JSONEncoder()
do {
    let data = try encoder.encode(currentReport)
} catch {
    print(error)
}

然后使用 write(to:options:) 函数将 Data 保存到文件中,如下所示:

do {
    if var url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
        url.appendPathComponent("reports.json")
        try data.write(to: url)
    }
} catch {
    print(error)
}

完整的代码可能如下所示:

do {
    let reports = [Report(question: "", userCount: 1, hintCount: 1)]
    let data = try JSONEncoder().encode(reports)
    if var url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
        url.appendPathComponent("reports.json")
        try data.write(to: url)
    }
} catch {
    print(error)
}