我试图用opencsv解析一个类似的文件-
CUST,Warren,Q,Darrow,8272 4th Street,New York,IL,76091
TRANS,1165965,2011-01-22 00:13:29,51.43
CUST,Erica,I,Jobs,8875 Farnam Street,Aurora,IL,36314
TRANS,8116369,2011-01-21 20:40:52,-14.83
TRANS,8116369,2011-01-21 15:50:17,-45.45
TRANS,8116369,2011-01-21 16:52:46,-74.6
TRANS,8116369,2011-01-22 13:51:05,48.55
TRANS,8116369,2011-01-21 16:51:59,98.53
我将使用customer对象读取以“cust”开头的记录。customer对象将包含一个事务列表。
public class Customer {
private String firstName;
private String middleInitial;
private String lastName;
private String address;
private String city;
private String state;
private String zipCode;
List<Transaction> transactions;
...
}
我将使用事务对象来读取以“trans”开头的记录。
public class Transaction {
private String accountNumber;
private Date transactionDate;
private Double amount;
...
}
一个客户可以有一个或多个事务。不过,我可以使用csvreader来实现这一点。我能用注解实现同样的效果吗?
1条答案
按热度按时间vlju58qv1#
csv文件是列表,对吗?嗯,有些人喜欢单子里的单子。
从文档中
似乎opencsv只能处理单个“物理”csv记录中的子列表,而且似乎没有什么可以处理您的案例。但是,如果可以逐个记录解析输入的csv文档,则可以将解析组织为组解析,以便在组准备就绪后,可以自己反序列化它。
例如,
上面的方法可以从csv生成两个字符串数组列表:
只有这两个组,就可以将每个组反序列化为的一个示例
Customer
:产生以下输出到终端:
我想它应该比opencsv中内置的反序列化还要快一点(+它只是更灵活,但是很无聊)。但是我还不知道如何改进上面的代码来支持csv头而不是硬编码的列位置。