C# 将csv文件转换为json,json在一行中有两列,并且有多行

C# 将csv文件转换为json,json在一行中有两列,并且有多行,c#,C#,我有一个csv文件,在一行中有两列具有多个值。我想将其转换为列表 例如: CSV数据 Id name parentid 1 sam 12-george 24-jennifer Json数据 [{id:1,姓名:山姆,家长id:[{id:12,姓名:乔治},{id:24,姓名:詹妮弗}]}]课程计划 class Program { const string CSV = @"Id

我有一个csv文件,在一行中有两列具有多个值。我想将其转换为列表

例如: CSV数据

Id     name      parentid
1       sam         12-george
                    24-jennifer
Json数据

[{id:1,姓名:山姆,家长id:[{id:12,姓名:乔治},{id:24,姓名:詹妮弗}]}]

课程计划
class Program
{
    const string CSV =
        @"Id     name      parentid
        1       sam         12-george
                            24-jennifer";

    static void Main(string[] args)
    {
        var csvArray = new JArray();

        // Split to lines
        string[] lines = CSV.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

        // Ignore header line
        JArray currentParentArray = null;
        for (int i = 1; i < lines.Length; i++)
        {
            string[] items = lines[i].Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
            if (items.Length == 3)
            {
                var line = new JObject();
                csvArray.Add(line);

                line["id"] = int.Parse(items[0]);
                line["name"] = items[1];

                currentParentArray = new JArray();
                line["parentid"] = currentParentArray;

                ParseParentId(items[2], currentParentArray);
            }

            if (items.Length == 1 && currentParentArray != null)
                ParseParentId(items[0], currentParentArray);
        }

        var ser = JsonSerializer.CreateDefault();

        string json = csvArray.ToString();
        Console.WriteLine(json);
        Console.ReadKey();
    }

    static void ParseParentId(string parentId, JArray parentArray)
    {
        int idx = parentId.IndexOf("-");
        string id = parentId.Substring(0, idx);
        string name = parentId.Substring(1 + idx);

        var obj = new JObject();
        obj["id"] = int.Parse(id);
        obj["name"] = name;

        parentArray.Add(obj);
    }
}
{ 常量字符串CSV= @“Id名称parentid 1山姆12乔治 24“珍妮弗”; 静态void Main(字符串[]参数) { var csvArray=new JArray(); //拆分为行 string[]line=CSV.Split(新[]{'\r','\n'},StringSplitOptions.RemoveEmptyEntries); //忽略标题行 JArray currentParentArray=null; 对于(int i=1;i
这个C#源应该可以工作。如果下一行仅包含另一个parentid,则会在行间记住parentid数组并将其添加到


添加对Newtonsoft.Json的Nuget引用以进行编译。

?你试过什么?选择了一个用于读取CSV数据的库?选择了一个用于创建JSON的库?试图使用它们?出什么问题了?你自己试过了吗?我想CSV数据实际上不是CSV?最好看看CSV的实际结构。请不要将堆栈溢出转化为代码编写服务。如果这个问题不适合这个网站,请不要回答。