Orgnization{
private String name;
private String uniqueId;
private boolean selfRegEnabled;
private List<Address> addrList;
public void setAddress(Address a){..}
public void setName(String name){..}
}
Addess{
private String type;
private String line1;
private String line2;
private String line3;
private String city;
private String state;
private String zip;
private String country;
}
CSV标题栏如下所示
System.UniqueID,名称,EnableSelf登记,Addr1.Type,Addr1.Line1,Addr1.Line2,Addr1.Line3,Addr1.City,Addr1.State,Addr1.Zip,Addr1.Country,Addr2.Type,地址2 .Line1,Addr2.Line2,Addr2.Line3,Addr2.City,Addr2.State,Addr2.Zip,Addr2.Country,Addr3.Type,Addr3.Line1,Addr3.Line2,Addr3.Line3,Addr3.City,Addr3.State ,Addr3.Zip,Addr3.Country
我的问题可能与以下链接有关
我没有看到该主题有正确的答案(我不确定我是否错过了该主题)
我们可以用任何现有的csv库实现相同的功能,例如supercsv,opencsv?
如果我使用supercsv - 我可以将csv的System.UniqueID列映射到my bean的systemUniqueID属性
答案 0 :(得分:1)
您当然可以使用CsvDozerBeanReader使用Super CSV执行此操作。请在网站上查看此example。
还在this SO回答中详细解释了这一点。
您可能也对this最近的问题感兴趣,因为它演示了使用Super CSV(使用和不使用Dozer)实现深度/索引映射的不同方法。
按照网站上的CsvDozerBeanReader
示例,要从您的问题中读取CSV,您将使用以下字段映射:
final String[] fieldMapping = new String[]{
"uniqueId",
"name",
"selfRegEnabled",
"addrList[0].type",
"addrList[0].line1",
"addrList[0].line2",
"addrList[0].line3",
"addrList[0].city",
"addrList[0].state",
"addrList[0].zip",
"addrList[0].country",
"addrList[1].type",
"addrList[1].line1",
"addrList[1].line2",
"addrList[1].line3",
"addrList[1].city",
"addrList[1].state",
"addrList[1].zip",
"addrList[1].country",
"addrList[2].type",
"addrList[2].line1",
"addrList[2].line2",
"addrList[2].line3",
"addrList[2].city",
"addrList[2].state",
"addrList[2].zip",
"addrList[2].country"
};
另外,因为selfRegEnabled
字段是布尔值,所以您需要使用cell processors将String值转换为布尔值 - 为此,您需要使用ParseBool
处理器。