gpt4 book ai didi

json - 读/写本地 json 文件 swift 4

转载 作者:搜寻专家 更新时间:2023-11-01 06:55:33 24 4
gpt4 key购买 nike

请帮帮我!我在项目中添加了一个json文件我的 json 文件:

{
"person": [
{
"title": "Витамин А",
"image": "Vitamin1",
"favorite": false
},
{
"title": "Витамин B6",
"image": "Vitamin2",
"favorite": false
}
]
}

我可以读取文件:

struct ResponseData: Decodable {
var person: [Person]
}

struct Person : Decodable {
var title: String
var image: String
var favorite: Bool
}

从文件中加载json函数:

func loadJson(filename fileName: String) -> [Person]? {
if let url = Bundle.main.url(forResource: fileName, withExtension: "json") {
do {
let data = try Data(contentsOf: url)
let decoder = JSONDecoder()
let jsonData = try decoder.decode(ResponseData.self, from: data)
return jsonData.person
} catch {
print("error:\(error)")
}
}
return nil
}

var VTarray2 = [Person]()

override func viewDidLoad() {
super.viewDidLoad()

VTarray2 = loadJson(filename: "document")!
VTarray2[0].favorite = true
}

我编写函数并得到我的编辑 json!现在我需要在文件中写入json

func encoderJsonFiles() { 
let encoder = JSONEncoder()
do {
let jsonData = try encoder.encode(VTarray2)
if let jsonString = String(data: jsonData, encoding: .utf8) {
print(jsonString)
}
} catch {
print(error.localizedDescription)
}
}

我写了保存到文件的函数

func SaveToFile(){
let file = "Myfile.json"

if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {

let fileURL = dir.appendingPathComponent(file)

do {
let jsonData = try encoder.encode(VTarray2)
try jsonData.write(to: fileURL)
}
catch {/* error handling here */}
}

添加函数 LoadFromJsonFile()我读数据。但我无法以 JSON 格式解码它们如何解析数据?

func LoadFromJsonFile() {
let fileURL = UserDefaults.standard.url(forKey: "fileURL")!
do {
let myJSON = try String(contentsOf: fileURL, encoding: .utf8)
print("JSONLoad : \(myJSON)")
print("JSONPath: \(fileURL)")
}
catch {print("Error")}
}

谢谢!

最佳答案

使用

struct ResponseData: Codable {

能够解码

let dic = try decoder.decode(ResponseData.self, from: data)

并编码

let data = try JSONEncoder().encode(item)

关于json - 读/写本地 json 文件 swift 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53654842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com