Nukepayload2.Csv is a cross-platform Csv String <==> .NET Object converter. Commonly Used members: Nukepayload2.Csv.CsvConvert.SerializeObject Nukepayload2.Csv.CsvConvert.DeserializeObject Supported types in csv columns: System.String System.DateTime System.Int32 System.Int64 System.Single System.Double System.Boolean NOTE: Please don't forget to add the "Code Generation" capability if you are using this package in a UWP project. If JIT is not allowed, both serialization and deserialization could be much slower than expected.
$ dotnet add package Nukepayload2.CsvNukepayload2.Csv is a cross-platform Csv String <==> .NET Object converter.
| Feature | IsSupported |
|---|---|
| Custom line separator | True |
| Custom column separator | True |
| Custom csv layout | True |
| Csv String to Objects | True |
| Objects to Csv String | True |
| Escape characters | True |
| Custom format string for output | True |
| Read-only properties | True |
| Opt-in and Opt-out columns | True |
| Run in multi-threaded code | True |
| Custom format string for input | False |
| Csv UTF-8 Stream to Objects | False |
| Objects to UTF-8 Stream | False |
| Column oriented and Sparse storage | False |
| Excel number parser compatibility | Partial |
| Excel formula compatibility | False |
Get on Nuget
https://www.nuget.org/packages/Nukepayload2.Csv
如果你需要中文介绍,请向下滚动页面。
Goal: convert the following csv string to .NET Object.
Id,Rate,Name,Date,IsUsed
-233,12345.12,test string,2018-05-09,True
0,-12345.12,,2018-09-09,False
VB
Public Class MyCsvModel
Public Property Id As Integer
Public Property Rate As Double
Public Property Name As String
Public Property [Date] As Date
Public Property IsUsed As Boolean
End Class
C#
public class MyCsvModel
{
public int Id { get; set; }
public double Rate { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public bool IsUsed { get; set; }
}
IReadOnlyList of MyCsvModelAssume that csv is a System.String that contains csv.
VB
Dim converted = CsvConvert.DeserializeObject(Of MyCsvModel)(csv)
C#
var converted = CsvConvert.DeserializeObject<MyCsvModel>(csv);
VB
csv = CsvConvert.SerializeObject(converted)
C#
csv = CsvConvert.SerializeObject(converted);
cd Nukepayload2.Csv.ModelGeneratordotnet build Nukepayload2.Csv.ModelGenerator.vbprojdotnet run Nukepayload2.Csv.ModelGenerator.dll (Change \ to / on Linux) .PublishAot)Nukepayload2.Csv 是一个跨平台的 Csv 字符串 <==> .NET 对象转换器。
在 csv 每一列中支持的数据类型:
| 功能 | 是否支持 |
|---|---|
| 自定义行分隔符 | 是 |
| 自定义列分隔符 | 是 |
| 自定义 CSV 布局 | 是 |
| 字符串到对象转换 | 是 |
| 对象到字符串转换 | 是 |
| 转义字符 | 是 |
| 自定义输出格式字符串 | 是 |
| 只读属性支持 | 是 |
| 选入和排除的 csv 列选择模式 | 是 |
| 执行在多线程代码中 | 是 |
| 自定义输入格式字符串 | 否 |
| UTF-8 流到对象 | 否 |
| 对象 to UTF-8 流 | 否 |
| 列式存储和稀疏存储 | 否 |
| Excel 数字转换器兼容 | 部分 |
| Excel 公式兼容 | 否 |
在 Nuget 下载
目标: 把下面的 csv 字符串转换为 .NET 对象
Id,Rate,Name,Date,IsUsed
-233,12345.12,test string,2018-05-09,True
0,-12345.12,,2018-09-09,False
VB
Public Class MyCsvModel
Public Property Id As Integer
Public Property Rate As Double
Public Property Name As String
Public Property [Date] As Date
Public Property IsUsed As Boolean
End Class
C#
public class MyCsvModel
{
public int Id { get; set; }
public double Rate { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public bool IsUsed { get; set; }
}
MyCsvModel 的 IReadOnlyList假定 csv 是包含 csv 的 System.String。
VB
Dim converted = CsvConvert.DeserializeObject(Of MyCsvModel)(csv)
C#
var converted = CsvConvert.DeserializeObject<MyCsvModel>(csv);
VB
csv = CsvConvert.SerializeObject(converted)
C#
csv = CsvConvert.SerializeObject(converted);
cd Nukepayload2.Csv.ModelGeneratordotnet build Nukepayload2.Csv.ModelGenerator.vbprojdotnet run Nukepayload2.Csv.ModelGenerator.dll (Linux 上把 \ 改成 /) .PublishAot)