我已经创建了一个winform来保存发票数据。它通常将数据以json格式存储到文本文件中。稍后,用户可以上传到调用此文件的服务器。但我的方法是覆盖文件,所以只能存储一个发票数据。我需要在每个保存发票请求中添加数据。
我在下面的链接中找到了另一个场景:如何在不影响格式的情况下附加一个json文件。但是,这对我不起作用。因为我正在使用列表项将字典添加到字典中。这在上面的回答中没有提到。
以下是按下保存按钮时执行的操作的代码片段:
var inv_continer = new List<dynamic>();
var inv_details = new Dictionary<string, string>();
int i = 1;
//iterating through items in dg
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    //check the row contian data or not
    if (row.Cells["Column4"].Value != null)
    {
            inv_details = new Dictionary<string, string>
                                    {
                                        {"key1", i.ToString()},
                                        {"key2", row.Cells["Column10"].Value.ToString()},
                                        {"key3", row.Cells["Column3"].Value.ToString()},
                                        {"key4", row.Cells["Column9"].Value.ToString()},
                                        {"key5", ""},
                                        {"key6", ""},
                                        {"key6", ""},
                                        {"key7", row.Cells["Column5"].Value.ToString()},
                                        {"key8", row.Cells["Column4"].Value.ToString()},
                                        {"key9", row.Cells["Column6"].Value.ToString()},
                                        {"key10", "0.00"}
                                     };
        inv_continer.Add(JsonConvert.SerializeObject(inv_details));
        i++;
    }
}
//var json_container = JsonConvert.SerializeObject(inv_continer);
var json_container = "[";
foreach (var item in inv_continer)
{
    if (inv_continer[0] != item)
    {
        json_container += ",";
    }
    json_container += item;
}
json_container += "]";
//appending header and footer to inv details
dynamic data = new Dictionary<string, string>
                        {
                            {"key1","data_1"},
                            {"Key2","data_2"},
                            {"key3", json_container},
                            {"key4", ""}
                        };
try
{
    File.WriteAllText("temp_", JsonConvert.SerializeObject(data));
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
其中“temp_”是带有json的文件
我想获得用于将第二个发票作为第二个对象添加到同一个json的语法,依此类推。。。