我想处理[[0,0],[100,100]]
之类的数据,但是我不知道如何使用CsvHelper
来做到这一点。我定义为float[][]
和CsvReader
返回null,那么正确的事情是什么?
答案 0 :(得分:0)
此数据不是csv。 CsvHelper会尝试像"[[0"
,"0]"
,"[100"
,"100]]"
那样解析它。您可以使用Newtonsoft.Json
Nuget包对其进行反序列化。
var data = "[[0,0],[100,100]]";
float[][] result = JsonConvert.DeserializeObject<float[][]>(data);
@John很好。这可能是CSV文件中单元格内的数据。在这种情况下,ClassMap
可能是一个不错的选择。
public class Program
{
public static void Main(string[] args)
{
using (MemoryStream stream = new MemoryStream())
using (StreamWriter writer = new StreamWriter(stream))
using (StreamReader reader = new StreamReader(stream))
using (CsvReader csv = new CsvReader(reader))
{
writer.WriteLine("Id,Data");
writer.WriteLine("1,\"[[0,0],[100,100]]\"");
writer.Flush();
stream.Position = 0;
csv.Configuration.RegisterClassMap<FooMap>();
var results = csv.GetRecords<Foo>().ToList();
}
}
}
public class Foo
{
public int Id { get; set; }
public float[][] Data { get; set; }
}
public class FooMap : ClassMap<Foo>
{
public FooMap()
{
Map(m => m.Id);
Map(m => m.Data).ConvertUsing(row => JsonConvert.DeserializeObject<float[][]>(row.GetField("Data")));
}
}