首页 > 解决方案 > 更新 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;
    }
}

标签: c#json

解决方案


看起来您每次都在添加一本新书。有了这条线

catalogueInstance.books.Add(new Book(id, title, author, year, publisher,isbn));

看看抓取你想要编辑的书的实例。

var book = catalogueInstance.books.firstOrDefault(b => b.id == id);

然后更新你的书。


推荐阅读