如何保存json文件

本文关键字:json 文件 保存 何保存 | 更新日期: 2023-09-27 18:01:36

我确实有这段代码,它提供了良好的价值,但它没有保存修改。我该怎么办?

using (StreamReader r = new StreamReader("C:/Files/generated.json"))
{
    string json = r.ReadToEnd();
    var result = JsonConvert.DeserializeObject<List<Form>>(json);
    foreach (var item in result)
    { 
        if (item.id == FormtoSave.id)
        {
            item.Title = FormtoSave.Title;
            item.body = FormtoSave.body;
        }
    }
}

如何保存json文件

在修改项目标题和主体后,您将再次序列化json对象并将json字符串存储在文件中。

TextWriter writer = new StreamWriter("c:''fileName..json");
        writer.WriteLine("Serialized Json string ");
        writer.Flush();
        writer.Close();

尝试将修改后的对象转换回json:

string jsonOutput= JsonConvert.SerializeObject(result);

编辑:为了将字符串保存到文件中,使用以下命令:

string path = @"c:'output.json";
File.WriteAllText(path, jsonOutput);

您需要将更改保存回文件:

string resultJson = String.Empty;
using (StreamReader r = new StreamReader("C:/Files/generated.json"))
{
    string json = r.ReadToEnd();
    var result = JsonConvert.DeserializeObject<List<Form>>(json);
    foreach (var item in result)
    { 
        if (item.id == FormtoSave.id)
        {
            item.Title = FormtoSave.Title;
            item.body = FormtoSave.body;
        }
    }
    resultJson = JsonConvert.SerializeObject(result);
}
File.WriteAllText("C:/Files/generated.json", resultJson);

我在using之外进行了写入,所以文件仍然没有被StreamReader锁定。

或不使用StreamReader:

string path = "C:/Files/generated.json";
var result = JsonConvert.DeserializeObject<List<Form>>(File.ReadAllText(path));
foreach (var item in result)
{ 
    if (item.id == FormtoSave.id)
    {
        item.Title = FormtoSave.Title;
        item.body = FormtoSave.body;
    }
}
File.WriteAllText(path, JsonConvert.SerializeObject(result));

下面的例子将帮助你

List<data> _data = new List<data>();
_data.Add(new data()
                {
                    Id = 1,
                    SSN = 2,
                    Message = "A Message"
                });
string json = JsonConvert.SerializeObject(_data.ToArray());
//write string to file
System.IO.File.WriteAllText (@"D:'path.txt", json);