C# 将 CSV 解析为 JSON 格式错误

标签 c# json serialization csv

看看,让我知道我到底在搞什么;)

[HttpPost]
public ActionResult Upload(HttpPostedFileBase File)
{

    HttpPostedFileBase csvFile = Request.Files["adGroupCSV"];

    byte[] buffer = new byte[csvFile.ContentLength];
    csvFile.InputStream.Read(buffer, 0, csvFile.ContentLength);

    string csvString = System.Text.Encoding.UTF8.GetString(buffer);

    string[] lines = Regex.Split(csvString, "\r");
    List<string[]> csv = new List<string[]>();

    foreach (string line in lines)
    {
        csv.Add(line.Split(','));
    }

    string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(csv);

        ViewData["CSV"] = json;

        return View(ViewData);
}

这是这样的:

json = "[[\"Col1\",\"Col2\",\"Col3\",\"Col4\",\"Col5\",\"Col6\"],[\"test\",\"test\",\"test\",\"test\",\"http://www.test.com/\",\"test/\"],[\"test\",\"test\",\"test\",\"test\",\"http://www.test.com...

这就是我想要的:

{"Col1":"test","Col2":"test","Col3":"test","Col4":"test","Col5":"http://www.test.com/","Col6":"test/"}

这是 CSV 的示例

Col1,Col2,Col3,Col4,Col5,Col6
Test1,Test1,Test1,test1,test.test,test/
Test2,Test2,Test2,test2,test.test,test/
Test3,Test3,Test3,test3,test.test,test/
Test4,Test4,Test4,test4,test.test,test/

最佳答案

你需要一本字典。只需更换即可

List<string[]> csv = new List<string[]>();

foreach (string line in lines)
{
    csv.Add(line.Split(','));
}

var csv = lines.Select(l => l.Split(',')
                            .Select((s,i)=>new {s,i})
                            .ToDictionary(x=>"Col" + (x.i+1), x=>x.s));

应该可以用...

编辑

var lines = csvString.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
var cols = lines[0].Split(',');
var csv = lines.Skip(1)
               .Select(l => l.Split(',')
                             .Select((s, i) => new {s,i})
                             .ToDictionary(x=>cols[x.i],x=>x.s));

var json = new JavaScriptSerializer().Serialize(csv);

关于C# 将 CSV 解析为 JSON 格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15484060/

相关文章:

java - 需要在不编写包装器的情况下使第三方对象可序列化

c# - 检查浮点变量是否为整数的最可靠方法是什么?

c# - OleDBConnection 连接字符串

c# - 对 DBContext 使用依赖注入(inject)时,使用语句的外观应该如何?

json - 在 PostgreSQL 中更新 jsonb 数据中的多个值

c - 使用 ‏μC/OS-II 直接解析 json

c - 用 C 序列化包

java - 如何为 kafka-mirror-maker 创建自定义序列化程序?

c# - 友好的端口名称组合框 c# Windows 窗体

java - 如何在 Android 中使用循环数据创建 JSON 数组