C# 将csv文件转换为json,json在一行中有两列,并且有多行
我有一个csv文件,在一行中有两列具有多个值。我想将其转换为列表 例如: CSV数据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
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的实际结构。请不要将堆栈溢出转化为代码编写服务。如果这个问题不适合这个网站,请不要回答。