我正在尝试将 bean 映射到 CSV 文件,但我的 bean 具有其他嵌套的 bean 作为属性的问题。发生的情况是,OpenCSV通过属性找到一个bean,然后进入它并映射该bean内部的所有数据,如果它找到另一个bean,它就会继续下去。如何使用 OpenCSV 处理嵌套的 bean?如何确保它从嵌套的 bean 映射正确的属性?
在OpenCSV 5.0中,我们可以通过@CsvRecurse
注释来映射嵌套的bean,而无需使用MappingStrategy。
能够将映射从输入/输出列拆分为成员 多个嵌入式 bean 的变量已通过 注释@CsvRecurse。一个根豆还是需要的。
csv 文件
id,cardNumber,holder
1,1234567 890,abc
根豆
public class DataSet {
@CsvBindByName
private String id;
@CsvRecurse
private MyNumber myNumber;
//getter and setter
}
嵌套豆
public class MyNumber {
@CsvBindByName
private String cardNumber;
@CsvBindByName
private String holder;
// getter and setter
}
读豆
public static void main(String[] args) throws IOException {
BufferedReader reader = Files.newBufferedReader(Paths.get("path-to-csv-file.csv"));
List<DataSet> beans = new CsvToBeanBuilder<DataSet>(reader).withType(DataSet.class).build().parse();
}
参考: http://opencsv.sourceforge.net/#multivaluedmap_based_bean_fields_many_to_one_mappings