CsvHelper - 特定列的自定义解析器

时间:2021-01-22 17:53:33

标签: csvhelper

是否有一种好方法可以覆盖特定列/字段的解析,即包含 json 对象的格式不正确的文档。流读取 json 并通过将流向前移动超过不正确/格式错误的 csv 字段,同时保存/返回 json。

最好结合使用 CsvDataReader 和 DataTable.Load

编辑 - 澄清示例:
col_a;col_b;col_c;col_json
0.0;-1;0;{"t": 1598270895, "text": "hello world" }

1 个答案:

答案 0 :(得分:0)

我认为这行不通,但我确实发现只需设置 BadDataFound = null 即可使用最新版本的 CsvHelper 和您的示例数据。

但是,如果“文本”中包含换行符或分号,则它不起作用。

void Main()
{
    var config = new CsvConfiguration(CultureInfo.InvariantCulture)
    {
        BadDataFound = null,
        Delimiter = ";"
    };
    using(var reader = new StringReader("col_a;col_b;col_c;col_json\n0.0;-1;0;{\"t\": 1598270895, \"text\": \"hello world\"}"))
    using(var csv = new CsvReader(reader, config))
    {
        using (var dr = new CsvDataReader(csv))
        {
            var dt = new DataTable();
            dt.Load(dr);
            dt.Dump();
        }
    }
}