1
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,Name,EnableSelf-Registration,Addr1.Type,Addr1.Line1,Addr1.Line2,Addr1.Line3,Addr1.City,Addr1.State,Addr1.Zip,Addr1.Country,Addr2.Type,Addr2.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。邮编,Addr3.Country

我的问题可能与以下链接有关

OpenCSV CSV 到 JavaBean

我没有看到该线程有正确的答案(我不确定我是否错过了该线程中的任何答案)

我们可以使用任何现有的 csv 库(如 supercsv、opencsv)实现相同的目标吗?

如果我使用的是 supercsv - 我可以将 csv 的 System.UniqueID 列映射到我的 bean 的 systemUniqueID 属性吗

4

1 回答 1

1

您当然可以使用 CsvDozerBeanReader 使用 Super CSV 执行此操作。请参阅网站上的此示例

这个SO answer 上也有更详细的解释。

您可能也对这个最近的问题感兴趣,因为它演示了使用 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字段是布尔值,因此您需要使用单元处理器将字符串值转换为布尔值 - 为此,您将使用ParseBool处理器。

于 2013-05-04T01:58:48.757 回答