我正在处理一个文件来添加/检索数据.数据格式是
JSON.我是新手.
我正在使用JSON.NET来序列化和反序列化数据.
这是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,为此我需要检查是否已经有一些数据?
>和第二个我想在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:\Users\grahamo\Documents\Visual Studio 2013\Projects\WebApplication1\WebApplication1\bin\path.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);
如果我是新人,如果我帮助你,可以选择投票或打勾.