无法将 CSV 转换为 Poco
Can't convert CSV to Poco
我正在尝试读取从上传表单发送的 CSV 文件并将其转换为我的 Poco。
这是我的测试文件:
"30247685204","PWITA1","114000/2017/SE","","27/11/2017","1027/00","","","ZZPWI1","INTER MEMBER1",
"30247685205","PWITA2","114000/2017/SE","","27/11/2017","1027/00","","","ZZPWI2","INTER MEMBER2"
这是我的 Poco:
public class MyOrder
{
public string TrackingID { get; set; }
public string CarrierName { get; set; }
public string ConNo { get; set; }
public string import_id { get; set; }
public string EnteredDate { get; set; }
public string CustomerRef { get; set; }
public string ConDescription { get; set; }
public string TransferAcCode { get; set; }
public string AccountNo { get; set; }
public string AccountName { get; set; }
}
以下是我在服务中获取文件内容的方式:
foreach (var uf in Request.Files.Where(f => f.ContentLength > 0))
{
var content = new StreamReader(uf.InputStream).ReadToEnd();
var orders = content.FromCsv<List<MyOrder>>();
}
如果我在 var content
上中断,我可以看到我得到的文件内容是这样的:
"\"30247685204\",\"PWITA1\",\"114000/2017/SE\",\"\",\"27/11/2017\",\"1027/00\",\"\",\"\",\"ZZPWI1\",\"INTER MEMBER1\",\r\n\"30247685205\",\"PWITA2\",\"114000/2017/SE\",\"\",\"27/11/2017\",\"1027/00\",\"\",\"\",\"ZZPWI2\",\"INTER MEMBER2\"\r\n"
问题是我无法在 var orders
中获得正确的 Poco 订单列表。
我只得到一个元素(在文件中我有两个)而且它是空的...所有属性都设置为 null
!
我总是处理 JSON 对象,过去我没有遇到过问题,这是我第一次尝试读取 CSV 文件,我不明白我哪里错了!
您可以指定不将 CSV 的第一行视为 headers:
CsvConfig<MyOrder>.OmitHeaders = true;
最好在您的 AppHost 中设置一次静态配置 Configure()
,然后您可以反序列化它:
var orders = CsvSerializer.DeserializeFromStream<List<MyOrder>>(uf.InputStream);
我正在尝试读取从上传表单发送的 CSV 文件并将其转换为我的 Poco。 这是我的测试文件:
"30247685204","PWITA1","114000/2017/SE","","27/11/2017","1027/00","","","ZZPWI1","INTER MEMBER1",
"30247685205","PWITA2","114000/2017/SE","","27/11/2017","1027/00","","","ZZPWI2","INTER MEMBER2"
这是我的 Poco:
public class MyOrder
{
public string TrackingID { get; set; }
public string CarrierName { get; set; }
public string ConNo { get; set; }
public string import_id { get; set; }
public string EnteredDate { get; set; }
public string CustomerRef { get; set; }
public string ConDescription { get; set; }
public string TransferAcCode { get; set; }
public string AccountNo { get; set; }
public string AccountName { get; set; }
}
以下是我在服务中获取文件内容的方式:
foreach (var uf in Request.Files.Where(f => f.ContentLength > 0))
{
var content = new StreamReader(uf.InputStream).ReadToEnd();
var orders = content.FromCsv<List<MyOrder>>();
}
如果我在 var content
上中断,我可以看到我得到的文件内容是这样的:
"\"30247685204\",\"PWITA1\",\"114000/2017/SE\",\"\",\"27/11/2017\",\"1027/00\",\"\",\"\",\"ZZPWI1\",\"INTER MEMBER1\",\r\n\"30247685205\",\"PWITA2\",\"114000/2017/SE\",\"\",\"27/11/2017\",\"1027/00\",\"\",\"\",\"ZZPWI2\",\"INTER MEMBER2\"\r\n"
问题是我无法在 var orders
中获得正确的 Poco 订单列表。
我只得到一个元素(在文件中我有两个)而且它是空的...所有属性都设置为 null
!
我总是处理 JSON 对象,过去我没有遇到过问题,这是我第一次尝试读取 CSV 文件,我不明白我哪里错了!
您可以指定不将 CSV 的第一行视为 headers:
CsvConfig<MyOrder>.OmitHeaders = true;
最好在您的 AppHost 中设置一次静态配置 Configure()
,然后您可以反序列化它:
var orders = CsvSerializer.DeserializeFromStream<List<MyOrder>>(uf.InputStream);