如何将CSV记录映射到bean?

时间:2012-02-09 10:52:21

标签: java csv annotations deserialization

我正在寻找一个可以帮助我解析包含管道分隔记录的CSV文件并从中创建我的bean类实例的Java库。

我已经研究过几种替代方案,例如SuperCSV,OpenCSV,BeanIO,JFileHelper,jsefa ......但是它们似乎都不具备它所需的功能。

图书馆的要求:

  1. 支持具有可变数量字段的记录
  2. 提供迭代器样式的访问权限,因此文件永远不会完全加载到内存中
  3. 支持将字段映射到其实际类型,即能够获取日期字段并将java.util.Date放入我的bean而不是字符串
  4. 让我提供我自己的工厂对象来创建bean,而不是默认为Class.newInstance()
  5. 我所研究的所有图书馆似乎缺乏要求#4。

    我可以使用反射,但问题是它仍然为CSV文件中的每一行创建一个新的bean对象。因为此时我唯一要做的就是将bean传递给我的持久层并将其存储在数据库中,将几个bean实例放入池并创建一个从中获取实例的工厂是有意义的。这个游泳池。通过这种方式,我可以重新使用我的实例,并且在GC出现之前解析100000行CSV文件不会导致100000个实例存在于内存中。

    是否有人知道可以处理所有这些要求的库?

1 个答案:

答案 0 :(得分:1)

这可能是另一种选择:https://github.com/org-tigris-jsapar/jsapar
它可能不符合要求#4。

在这里,您可以找到更全面的备选方案列表:http://jsapar.blogspot.se/p/links.html

编辑
从jsapar 1.8版开始,现在可以在外部工厂类中自定义Java对象,因此我想现在也符合#4的要求。