gpt4 book ai didi

c# - 在 JSON 文件中追加对象的最佳方式?

转载 作者:太空宇宙 更新时间:2023-11-03 19:06:14 24 4
gpt4 key购买 nike

我有一个包含 Person 对象的 JSON 文件,但我找不到一种合适的方式来附加更多对象。
示例:
[
{“名称”:“x”,“id”:“001”}
]

我尝试使用 List<> 和序列化/反序列化,但它似乎不起作用。

编辑:
单击按钮后会发生这种情况:

Person person = new Person();
person.fName = name.Text;
person.id = int.Parse(id.Text);

string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Project\\";

using (StreamReader r = new StreamReader(path + "persons.json")) {
string json = r.ReadToEnd();
List<Person> persons = JsonConvert.DeserializeObject<List<Person>>(json);
persons.Add(person);
string newJson = JsonConvert.SerializeObject(persons);
File.WriteAllText(path + "persons.json", newJson);
r.Close();
}

最佳答案

你得到这个错误是因为你试图写入打开以供读取的文件。

要解决此问题,您的代码需要先关闭 StreamReader,然后再写入文件。

Person person = new Person();
person.fName = name.Text;
person.id = int.Parse(id.Text);

string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Project\\";

using (StreamReader r = new StreamReader(path + "persons.json")) {
string json = r.ReadToEnd();
List<Person> persons = JsonConvert.DeserializeObject<List<Person>>(json);
persons.Add(person);
string newJson = JsonConvert.SerializeObject(persons);
}

File.WriteAllText(path + "persons.json", newJson);

或者,File 类提供读取文件的快捷方式,您的代码可以如下所示:

Person person = new Person();
person.fName = name.Text;
person.id = int.Parse(id.Text);

string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Project\\";

string json = File.ReadAllText(path + "persons.json");
List<Person> persons = JsonConvert.DeserializeObject<List<Person>>(json);
persons.Add(person);
string newJson = JsonConvert.SerializeObject(persons);
File.WriteAllText(path + "persons.json", newJson);

关于c# - 在 JSON 文件中追加对象的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148026/

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