有没有 CSV 序列化程序之类的东西?(类似于 XmlSerializer)



我正在玩弄序列化和反序列化CSV文件,我想知道是否有一个现有的库,在概念上类似于XmlSerializer,它可以声明性地定义对象并(反)序列化它们到文件或流。我环顾四周,但没有发现任何专注于序列化的内容。 我已经有了相当可靠的代码来解析每个 RFC 4180 的 CSV 文档,但真正有用的是序列化部分。我不在寻找的只是一个解析器,建议使用String.Split()等。

那里是否有一个现有的项目,或者我应该建立一个?

奖励礼仪问题:如果我最终推出了自己的序列化程序,是否适合用代码复合项目的链接来回答这个问题?

我强烈推荐servicestack.text用于此目的。在 nuget 上可用:

Install-package servicestack.text

它支持将序列化为多种数据格式,与内置的 XmlSerializer 不同,您无需使用属性修饰所有属性。下面是序列化为 CSV 的示例。

using ServiceStack.Text;
...
var csv = CsvSerializer.SerializeToCsv(new[]{
    new Dog () {
    Bark = "Woof!",
    Male = true,
    Size = 10
}});

我过去使用过这个项目(CsvHelper),它的工作方式类似于 .NET 序列化程序类中的构建,因为您使用属性来制作输入/输出。

真的没有必要自己滚动,因为那里有很多。如果您最终确实自己滚动,请随时发布它。大多数用户在用他们自己写的东西(或以某种方式隶属于)的东西回答问题时,通常会给出免责声明,以示礼貌。

你应该看看FileHelpers Library。

他们网站上的一些示例代码:

using FileHelpers; 
// First declare the record class 
[DelimitedRecord(",")] 
public class SampleType 
{ 
    public string Field1; 
    public int    Field2; 
} 
public void WriteExample() 
{ 
    FileHelperEngine engine = new FileHelperEngine(typeof(SampleType)); 
    SampleType[] records = new SampleType[1]; 
    records[0] = new SampleType(); 
    records[0].Field1 = "Hello World"; 
    records[0].Field2 = 12; 
    engine.WriteFile("destination.txt", records); 
    // Now the file contains the created record in this format: 
    //  
    // Hello World,12 
} 

最新更新