微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何在不干扰格式化的情况下附加json文件

我正在处理一个文件添加/检索数据.数据格式是 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);

如果我是新人,如果我帮助你,可以选择投票或打勾.

原文地址:https://www.jb51.cc/csharp/98180.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐