【问题标题】:Convert dynamic csv to json containing List<string> C#将动态 csv 转换为包含 List<string> C# 的 json
【发布时间】:2020-08-26 06:28:21
【问题描述】:

我想在 C# 中序列化一个字符串列表?我以前曾成功使用开源库 Cinchoo ETL 来完成类似的任务,但我被困在这个特定的场景中。我不想使用 POCO,因为我的源数据结构是动态的。我宁愿从 csv 读取数据并对其进行序列化。

我的csv格式的源数据:

id,name,friends/0,friends/1
1,Tom,Dick,Harry

必需的输出 JSON - {"id":1,"name":"Tom","friends":["Dick","Harry"]}

【问题讨论】:

  • 问题的标题和内容让我很困惑。您要将 CSV 转换为 JSON 还是将 JSON 转换为 CSV?
  • @Pac0 - 我想将 csv 转换为 json。但是,由于我的源数据结构是动态的,我不会使用 POCO。我最终的 json 格式就是我在问题中提到的。我想了解是否有任何开源库,这样我就不必重新发明轮子
  • @Jabberwocky - 这里的要求略有不同 - 我只想要数组中的字符串列表 - 数组中不需要属性名称。

标签: c# json csv choetl


【解决方案1】:

给你,你可以用Cinchoo ETL做如下

string csv = @"id,name,friends/0,friends/1
1,Tom,Dick,Harry";

StringBuilder json = new StringBuilder();
using (var w = new ChoJSONWriter(json)
    .Configure(c => c.SupportMultipleContent = true)
    .Configure(c => c.SingleElement = true)
    )
{
    using (var r = ChoCSVReader.LoadText(csv).WithFirstLineHeader()
        .Configure(c => c.AutoArrayDiscovery = true)
        .Configure(c => c.ArrayIndexSeparator = '/')
        )
        w.Write(r);
}
Console.WriteLine(json.ToString());

输出:

{
 "id": "1",
 "name": "Tom",
 "friends": [
  "Dick",
  "Harry"
 ]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 2016-03-25
    相关资源
    最近更新 更多