将列表添加到JSON文件

iecba09b  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(165)

我正在尝试创建一个加油站的某种登记簿。它很简单,我只是保存一些文件与工人信息,天然气信息,和收据。但是,我有麻烦的存储/然后读取我的收据JSON文件中的收据数据。以下是我的代码存储数据到一个文件:

var newReceipt = new List<Receipts>
       {
                new Receipts
                {
                //...
                //data
                //...
                }
       };
var nReceipt = JsonConvert.SerializeObject(newReceipt);
File.AppendAllText(receiptFile, nReceipt);

使用这段代码我的文件看起来像这样后2运行它

[
  {
    "pricePerL": 10.22,
    "ID": "NH1164DTDE",
    "amount": 10.0,
    "tax": 25.5500011,
    "totalPrice": 102.200005,
    "time": "01.20.2023 13:12",
    "sort": "beznin",
    "typeOfPayment": "card",
    "employee": "Denis"
  }
][
  {
    "ID": "300FIMTU7U",
    "sort": "disel",
    "employee": "Denis",
    "amount": 150.0,
    "pricePerL": 13.24,
    "tax": 496.5,
    "totalPrice": 1986.0,
    "typeOfPayment": "cash",
    "time": "01.20.2023 13:19"
  }
]

我有麻烦阅读这使用我的其他函数,由于方括号之间。其他函数只是使用foreach通过文件,并写出一些信息的收据,我发现它的工作时,没有方括号之间的两个收据。
我尝试了很多方法将数据记录到JSON文件中,但总是会出现方括号。我的另一个函数用于写出该文件中的所有收据,返回异常:“阅读JSON内容后遇到其他文本“
我的其他职能:

static void pregledRacuna(List<Receipts> racuniLista)
        {
            try
            {
                foreach (Receipts r in racuniLista)
                {
                  //writes out id and date
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }

这是我在这里的第一篇文章,所以如果有任何需要澄清的地方,请说出来!

gzszwxb4

gzszwxb41#

你不能只是将一个新的文本附加到文件中,你必须从文件中读取所有文本,反序列化,添加新的项目,然后写入所有内容

string json = File.ReadAllText(receiptFile);
var receipts= JsonConvert.DeserializeObject<List<Receipts>>(json);
receipts.Add(
                new Receipts
                {
                //...
                //data
                //...
                }
       );

json  = JsonConvert.SerializeObject(receipts);
File.WriteAllText(receiptFile, json);

相关问题