我已经创建了一个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的语法,依此类推。。。