c# - 更新 JSON 文件而不是添加
问题描述
我正在尝试更新从我的 JSON 文件反序列化的信息。该列表以可编辑的 asp.net 表单填充,我想编辑该项目,然后更新 JSON 文件。当我进行更改时,它会将新文件添加到列表中,而不是更新原始文件。我怎样才能让它更新而不是添加。
提前致谢!
public partial class EditBook : System.Web.UI.Page
{
Catalogue catalogueInstance;
//Filepath for json file
const string FILENAME =
@"C:\Users\tstra\Desktop\19456932_CSE2ICX_Assessment_3\Bin\Books.json";
protected void Page_Load(object sender, EventArgs e)
{
// reading data contained in the json filepath
string jsonText = File.ReadAllText(FILENAME);
//convert objects in json file to lists
catalogueInstance = JsonConvert.DeserializeObject<Catalogue>(jsonText);
ddlEdit.DataSource = catalogueInstance.books;
ddlEdit.DataTextField = "title";
ddlEdit.DataValueField = "id";
//binding the data to Drop Down List
ddlEdit.DataBind();
}
protected void btnSubmit_editBook(object sender, EventArgs e)
{
int id = Int32.Parse(txtID.Text);
string title = txtTitle.Text;
int year = Int32.Parse(txtYear.Text);
string author = txtAuthor.Text;
string publisher = txtPublisher.Text;
string isbn = txtISBN.Text;
catalogueInstance.books.Add(new Book(id, title, author, year, publisher,
isbn));
string jsonText = JsonConvert.SerializeObject(catalogueInstance);
File.WriteAllText(FILENAME, jsonText);
txtSummary.Text = "Book ID of " + id + " Has Been Updated in the
Catalogue" + Environment.NewLine;
}
protected void ddlEdit_SelectedIndexChanged(object sender, EventArgs e)
{
Book b = catalogueInstance.books[ddlEdit.SelectedIndex];
txtID.Text = b.id.ToString();
txtTitle.Text = b.title;
txtAuthor.Text = b.author;
txtYear.Text = b.year.ToString();
txtPublisher.Text = b.publisher;
txtISBN.Text = b.isbn;
}
}
解决方案
看起来您每次都在添加一本新书。有了这条线
catalogueInstance.books.Add(new Book(id, title, author, year, publisher,isbn));
看看抓取你想要编辑的书的实例。
var book = catalogueInstance.books.firstOrDefault(b => b.id == id);
然后更新你的书。
推荐阅读
- java - Android-TextView设置十进制值不正确打印逗号
- c++ - 类向量上的 C++ 编译问题
- angular - UI-grid 4.7.1 总是得到(错误:无法获取模板 ui-grid/cellEditor:[object Object])
- python - 删除 " 之间的所有非 ASCII 字符
图形”和“” - kubernetes - 将 Helm Hub 添加为 Artifactory 上的远程存储库
- google-sheets - Google表格搜索值并返回存在该值的多行的某些列
- wagtail - 鹡鸰将代码插入主体(流场)
- github - 如何使用 netlify 在 github 中显示报告文件?
- vue.js - 方法 vuejs 中的 if-else 语句
- ionic3 - 离子检查每个请求的 jwt 令牌过期