首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCSV数据解析

OpenCSV数据解析
EN

Stack Overflow用户
提问于 2011-04-30 15:55:03
回答 3查看 9.6K关注 0票数 7

我们使用OpenCSV解析CSV文件,并通过使用CsvToBean类将其值直接绑定到模型对象(OpenJPA entity bean)。

但是,问题是-- CSV中有一些值(显然)被解析为Strings,但应该在Date属性中设置,因此基本上CsvToBean类在尝试动态调用写入方法时死亡(即尝试使用原始字符串值设置日期属性)。

OpenCSV中是否有任何工具允许我指定应该将每一列映射到哪一种类型?如果没有,您有什么建议来扩展/重新实现哪个类来促进这一点?在OpenCSV目录下检查/test/au/com/bytecode/opencsv/bean/源代码分发中的其他可用策略,我并没有得出任何结论。

我想我可以摆弄Date属性设置器,使它成为一个泛型方法,将类型作为参数传递,并尝试将传递的值解析为Date (如果它已经不是Date ),但是.我们使用的是持久化注释实体,我不希望在后面看到这个" setter -hack“攻击我们,因为OpenJPA增强程序突然不喜欢泛型setter。

几个小时以来,我一直在思考这个问题--我可能会通过使用反射和编写自己的bean绑定逻辑来解决这个问题,但我不喜欢重新发明轮子,我有一种感觉/希望在现有的OpenCSV框架内可以轻松地完成这个任务。

如果需要的话,我可以发布一些代码,但实际上没什么可看的。

有什么想法吗?谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-30 16:03:53

如何在类定义中创建日期属性的副本?我们使用BeanUtils做了类似的事情

所以,Bean类包含

代码语言:javascript
复制
String dateString;
Date date;

public void setDateString(String dateString) {
     // This method can parse the dateString and set date object as well
}

public void setDate(Date date) {
     // Use this for JPA
}
票数 5
EN

Stack Overflow用户

发布于 2012-12-12 21:59:25

或者,您也可以使用超级CSV,它有一个单元处理器 API,它允许您使用该列的ParseDate处理器读取bean (无需修改)。

票数 2
EN

Stack Overflow用户

发布于 2011-04-30 15:59:20

也许一个临时的setter方法和原始的方法一起适用于您:

代码语言:javascript
复制
@Transient
public void setDate(String date) {
   Date d = parseDate(date);
   setDate(d);
}

@Column
public void setDate(Date date) {
  this.date = date;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5842915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档