如何解决CsvHelper 中的映射类属性
我想知道在使用 CsvHelper 解析 csv 时如何映射类属性。例如 我的csv是这样的
人,约翰,53 岁
地址,123 st,CA90045
我的模特是这样的
public class Person
{
public string Name {get;set;}
public int Age {get;set;}
public Address Address {get;set;}
}
public class Address
{
public string Street {get;set;}
public string Zip {get;set;}
}
那我如何将 Person.Address 设置为 Address 中映射的值?
提前致谢
解决方法
根据您链接的示例,您必须进行一些额外的处理,因为 CSV 数据仅存储平面结构。分层数据不能用 Json 或 XML 表示。
假设您已正确完成映射部分并且地址紧跟在下一个 CSV 行中的某个人之后
var persons = new List<Person>();
Person person;
while (csv.Read())
{
switch (csv.GetField(0))
{
case "Person":
person = csv.GetRecord<Person>();
persons.Add(person);
break;
case "Address":
Address address = csv.GetRecord<Address>();
person.Address = address;
break;
default:
throw new InvalidOperationException("Unknown record type.");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。