c# – 如何在不干扰格式化的情况下附加json文件
发布时间:2020-12-15 18:19:33 所属栏目:百科 来源:网络整理
导读:我正在处理一个文件来添加/检索数据.数据格式是 JSON.我是新手. 我正在使用JSON.NET来序列化和反序列化数据. 这是json格式 { "EmpId": 1,"Name": "Kaushik","Designation": ".net Developer","JoiningDate": "09/23/2013","Skill": [ { "Id": 1,"SkillName":
我正在处理一个文件来添加/检索数据.数据格式是
JSON.我是新手.
我正在使用JSON.NET来序列化和反序列化数据. 这是json格式 { "EmpId": 1,"Name": "Kaushik","Designation": ".net Developer","JoiningDate": "09/23/2013","Skill": [ { "Id": 1,"SkillName": "C#" },{ "Id": 2,"SkillName": "PHP" },{ "Id": 3,"SkillName": "java" } ] } 这是我正在研究的JSON格式. >我想附加文件数据,所以我可以添加更多的json,为此我需要检查是否已经有一些数据? [ { "EmpId": 1,"Skill": [ { "Id": 1,"SkillName": "C#" },{ "Id": 2,"SkillName": "PHP" },{ "Id": 3,"SkillName": "java" } ] },{ "EmpId": 1,"SkillName": "java" } ] } ] 所以主要的问题是我没有得到附加文件的确切逻辑. 我正在通过char读取char文件,如下所示 int count = 0; EmployeeDetail employee = new EmployeeDetail { EmpId = ++count,Name = formCollection["Name"],Designation = formCollection["Designation"],JoiningDate = formCollection["JoiningDate"],Skill = new List { new Skills(){Id = 1,SkillName = "C#"},new Skills(){Id = 2,SkillName = "PHP"},new Skills(){Id = 3,SkillName = "java"} } }; string json = JsonConvert.SerializeObject(employee,Formatting.Indented); var dataFile = Server.MapPath("~/App_Data/json_data.json"); //Reading the file StreamReader reader = new StreamReader(dataFile); int Tchar = 0; char ch; do { ch = (char)reader.Read(); Response.Write(ch); Tchar++; } while (!reader.EndOfStream); reader.Close(); StreamWriter file = new StreamWriter(dataFile,append:true); file.WriteLine(json); file.Close(); 所以任何帮助表示赞赏谢谢 解决方法
您最好和最可靠的方法是不附加到文件,而是读取整个JSON文件并反序列化为对象,附加到对象集合,然后将输出序列化回JSON文件.
我为你创建了这个示例(相应地更改路径和类): var filePath = @"C:UsersgrahamoDocumentsVisual Studio 2013ProjectsWebApplication1WebApplication1binpath.json"; // Read existing json data var jsonData = System.IO.File.ReadAllText(filePath); // De-serialize to object or create new list var employeeList = JsonConvert.DeserializeObject<List<EmployeeDetail>>(jsonData) ?? new List<EmployeeDetail>(); // Add any new employees employeeList.Add(new EmployeeDetail() { Name = "Test Person 1" }); employeeList.Add(new EmployeeDetail() { Name = "Test Person 2" }); // Update json data string jsonData = JsonConvert.SerializeObject(employeeList); System.IO.File.WriteAllText(filePath,jsonData); 如果我是新人,如果我帮助你,可以选择投票或打勾. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |