请帮助我!\n我在项目中添加了一个 json 文件\n我的 json 文件:
\n\n{\n "person": [\n {\n "title": "\xd0\x92\xd0\xb8\xd1\x82\xd0\xb0\xd0\xbc\xd0\xb8\xd0\xbd \xd0\x90",\n "image": "Vitamin1",\n "favorite": false\n },\n {\n "title": "\xd0\x92\xd0\xb8\xd1\x82\xd0\xb0\xd0\xbc\xd0\xb8\xd0\xbd B6",\n "image": "Vitamin2",\n "favorite": false\n }\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我可以读取文件:
\n\nstruct ResponseData: Decodable {\n var person: [Person]\n}\n\nstruct Person : Decodable {\n var title: String\n var image: String\n var favorite: Bool\n}\nRun Code Online (Sandbox Code Playgroud)\n\n从文件函数加载 json:
\n\nfunc loadJson(filename fileName: String) -> [Person]? {\n if let url = Bundle.main.url(forResource: fileName, withExtension: "json") {\n do {\n let data = try Data(contentsOf: url)\n let decoder = JSONDecoder()\n let jsonData = try decoder.decode(ResponseData.self, from: data)\n return jsonData.person\n } catch {\n print("error:\\(error)")\n }\n }\n return nil\n}\n\nvar VTarray2 = [Person]()\n\noverride func viewDidLoad() {\n super.viewDidLoad()\n\n VTarray2 = loadJson(filename: "document")!\n VTarray2[0].favorite = true\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我编写函数并得到我的编辑 json!\n现在我需要在文件中写入json
\n\nfunc encoderJsonFiles() { \n let encoder = JSONEncoder()\n do {\n let jsonData = try encoder.encode(VTarray2)\n if let jsonString = String(data: jsonData, encoding: .utf8) {\n print(jsonString)\n }\n } catch {\n print(error.localizedDescription)\n }\n }\nRun Code Online (Sandbox Code Playgroud)\n\n我编写了保存到文件的函数
\n\nfunc SaveToFile(){\n let file = "Myfile.json" \n\n if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {\n\n let fileURL = dir.appendingPathComponent(file)\n\n do {\n let jsonData = try encoder.encode(VTarray2)\n try jsonData.write(to: fileURL)\n }\n catch {/* error handling here */}\n}\nRun Code Online (Sandbox Code Playgroud)\n\n添加函数LoadFromJsonFile()\n我读取数据。但我无法以 JSON 格式解码它们\n如何解析数据?
\n\nfunc LoadFromJsonFile() {\n let fileURL = UserDefaults.standard.url(forKey: "fileURL")!\n do {\n let myJSON = try String(contentsOf: fileURL, encoding: .utf8)\n print("JSONLoad : \\(myJSON)")\n print("JSONPath: \\(fileURL)")\n }\n catch {print("Error")}\n}\nRun Code Online (Sandbox Code Playgroud)\n\n谢谢你!
\n使用
struct ResponseData: Codable {
Run Code Online (Sandbox Code Playgroud)
能够解码
let dic = try decoder.decode(ResponseData.self, from: data)
Run Code Online (Sandbox Code Playgroud)
并编码
let data = try JSONEncoder().encode(item)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7884 次 |
| 最近记录: |