是否有CSV Serializer这样的东西? (类似于XmlSerializer)

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

那里有一个现有的项目,还是我应该建一个?

奖励礼仪问题:如果我最终滚动自己的序列化程序,是否适合用codeplex项目的链接回答这个问题?

为此,我强烈推荐servicestack.text 。 nuget上的Avialable:

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 }