能否在@CsvBindByName注解中使用OR条件读取多份CSV文件?
解决多列名CSV文件的单Bean类读取问题
问题描述
我需要读取多份CSV文件,其中部分文件的列名存在差异,示例如下:
CSV1 和 CSV3:
| Column A | Column B | | --- | --- | | FirstNameL | LastNameL |
CSV2:
| Column A | Column B | | --- | --- | | First_Name | Last_Name |
希望通过单个Bean类读取这些不同列名的数据,比如实现类似@CsvBindByName(column = "FirstNameL" OR column = "First_Name")的效果。现有Bean类代码如下:
public class Test { @CsvBindByName(column = "FirstNameL") private String first_Name ; @CsvBindByName(column = "LastNameL") private String last_Name; //getters and setters }
解决方案
OpenCSV的@CsvBindByName注解本身支持多列名匹配,只需给column属性传入包含所有目标列名的数组即可,无需额外逻辑。
修改后的Bean类代码如下:
public class Test { @CsvBindByName(column = {"FirstNameL", "First_Name"}) private String first_Name; @CsvBindByName(column = {"LastNameL", "Last_Name"}) private String last_Name; // getters and setters }
这样读取不同列名的CSV文件时,OpenCSV会自动匹配数组中的任意一个列名,将对应值注入到Bean属性中,可直接适配CSV1、CSV2、CSV3的格式。
内容的提问来源于stack exchange,提问作者RakhiJ
相关产品推荐
相关产品推荐

