使用c#以json格式保存数据

Aar*_*rsh 2 c# json

我想以这种格式将数据保存在本地 json 文件中:

[
{"Name":"sdafdsf","Password":"dsfads","FirstName":"fsdf","LastName":"dsfdafas"},
{"Name":"sddafdsf","Password":"dsfadds","FirstName":"fdsdf","LastName":"dsfdafasdfs"} 
]
Run Code Online (Sandbox Code Playgroud)

我在控制器中使用它来序列化为 json 格式:

 public ActionResult Index(demo obj)
        {

            String json = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
            string path = Server.MapPath("~/app/");
            //// Write that JSON to txt file,  
            //var read = System.IO.File.ReadAllText(path + "output.json");
            System.IO.File.WriteAllText(path + "output.json",  json);
            return View();
        }
Run Code Online (Sandbox Code Playgroud)

这是我的模型:

public class demo
    {

        public string Name { get; set; }
        public string Password { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

但是我在 output.json 文件中得到了这个,而不是正确的 JSON 格式:

{"Name":"sdafdsf","Password":"dsfads","FirstName":"fsdf","LastName":"dsfdafas"}{"Name":"adfsdsfsafdsafasdfsdfsadf","Password":"dfsaasdsa","FirstName":"safd","LastName":"dfsafads"}
Run Code Online (Sandbox Code Playgroud)

如何以正确的格式保存数据?

Dab*_*bas 5

这是正确的格式,如果您的意思是像数组一样需要它,则将对象添加到数组中,然后将其序列化:

 public ActionResult Index(demo obj)
        {
    var array = new [] {obj};
            String json = Newtonsoft.Json.JsonConvert.SerializeObject(array);
            string path = Server.MapPath("~/app/");
            //// Write that JSON to txt file,  
            //var read = System.IO.File.ReadAllText(path + "output.json");
            System.IO.File.WriteAllText(path + "output.json",  json);
            return View();
        }  
Run Code Online (Sandbox Code Playgroud)

或者:

var list = new List<demo>();
list.Add(obj);
String json = Newtonsoft.Json.JsonConvert.SerializeObject(list);
Run Code Online (Sandbox Code Playgroud)

如果要始终将数据保留在数组中,则始终需要:

  1. 从json文件中读取数据。
  2. 淡化为“列表”列表。
  3. 将新项目添加到此列表中。
  4. 再次将其序列化并将其保存在该文件上,用新文本替换所有旧文本。

像这样:

 public ActionResult Index(demo obj)
        {
          string path = Server.MapPath("~/app/");
        var read = System.IO.File.ReadAllText(path + "output.json");
        List<demo> lst = Newtonsoft.Json.JsonConvert.DeserializeObject<List<demo>>(read);
        if (lst == null)
        {
            List<demo> _data = new List<demo>();
            _data.Add(obj);
           String json = Newtonsoft.Json.JsonConvert.SerializeObject(_data.ToArray());
            System.IO.File.WriteAllText(path + "output.json", json);
        }
        else
        {
            lst.Add(obj);
            String json = Newtonsoft.Json.JsonConvert.SerializeObject(lst);
            System.IO.File.WriteAllText(path + "output.json", json);
        }
        return View();
        }  
Run Code Online (Sandbox Code Playgroud)

当然,您可以通过分离一些部分来编写更清晰的代码。