将新数据附加到现有JSON文件中

本文关键字:JSON 文件 新数据 数据 | 更新日期: 2023-09-27 18:18:06

我到处寻找解决这个问题的方法,并在过去的几个星期里试图实现我自己的解决方案,但我就是想不出任何东西。

我将非常感谢任何帮助!

我有一个文件,它看起来像(file.json):

{
  "Expense": {
    "Name": "OneTel Mobile Bill",
    "Amount": "39.90",
    "Due": "28/12/2011",
    "Recurrence": "1 Months",
    "Paid": "0",
    "LastPaid": "01/01/2002"
  }
}

在我的应用程序中,当我创建一个新的"费用"时,我想把这个新的费用附加到这个现有的JSON文件中,所以它看起来像这样:

{
  "Expense": {
    "Name": "OneTel Mobile Bill",
    "Amount": "39.90",
    "Due": "28/12/2011",
    "Recurrence": "1 Months",
    "Paid": "0",
    "LastPaid": "01/01/2002"
  },
  "Expense": {
    "Name": "Loan Repayment",
    "Amount": "50.00",
    "Due": "08/03/2012",
    "Recurrence": "3 Months",
    "Paid": "0",
    "LastPaid": "08/12/2011"
  }
}

这就是我如何创建JSON并写入文件:

async public void WriteToFile(string type, string data)
{
    file = await folder.GetFileAsync(file.FileName);
    IRandomAccessStream writestream = await file.OpenAsync(FileAccessMode.ReadWrite);

    IOutputStream outputstream = writestream.GetOutputStreamAt(0);
    DataWriter datawriter = new DataWriter(outputstream);
    datawriter.WriteString(data);
    await datawriter.StoreAsync();
    outputstream.FlushAsync().Start();
}
private void CreateExpenseButton_Click(object sender, RoutedEventArgs e)
{
    //Create the Json file and save it with WriteToFile();
    JObject jobject =
        new JObject(
            new JProperty("Expense",
                new JObject(
                    new JProperty("Name", NameTextBox.Text),
                    new JProperty("Amount", AmountTextBox.Text),
                    new JProperty("Due", DueTextBox.Text),
                    new JProperty("Recurrence", EveryTextBox.Text + " " + EveryComboBox.SelectionBoxItem),
                    new JProperty("Paid", "0"),
                    new JProperty("LastPaid", "Never")
                           )
                         )
                   );
    try
    {
        WriteToFile(Expenses, jobject.ToString());
        // Close the flyout now.
        this.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
    }
    catch (Exception exception)
    {
        Debug.Write(exception.Message);
    }
}

我正在使用Json。它非常棒,但即使在阅读了包含的文档之后,我也完全不知道如何读取JSON文件并向其附加数据。

是否有任何示例来演示这是如何完成的,或者您可以推荐另一个c#库来允许我完成这一点?

<标题>编辑

这就是我从json文件中读取单个费用的方式:

        JObject json = JObject.Parse(data);
        Expense expense = new Expense
        {
            Amount = (string)json["Expense"]["Amount"],
            Due = (string)json["Expense"]["Due"],
            Name = (string)json["Expense"]["Name"]
        };
        Debug.Write(expense.Amount);

将新数据附加到现有JSON文件中

您可以尝试将数据反序列化到对象Expence中并添加您的数据,然后将对象(对象列表)序列化到文件

既然你可以直接读到一个Expense对象,你应该能够添加这样一个对象到List<Expense> -添加新的数据作为一个Expense对象到列表(直接从你的表单数据,或其他)。

此时,您应该能够使用JSON写出List<Expense>。. NET -它应该负责创建列表。

我建议你总是保存一个List<Expense>,即使它只包含一个项目,因为它会使序列化和反序列化更容易。