java - OpenCSV:将嵌套 Bean 映射到 CSV 文件

标签 java spring javabeans opencsv

我正在尝试将 bean 映射到 CSV 文件,但问题是我的 bean 具有其他嵌套 bean 作为属性。所发生的情况是,OpenCSV 遍历属性找到一个 bean,然后进入它并映射该 bean 内的所有数据,如果找到另一个 bean,它就会继续下去。如何使用 OpenCSV 处理嵌套 bean?如何确保它映射嵌套 bean 的正确属性?

最佳答案

在 OpenCSV 5.0 中,我们可以通过 @CsvRecurse 注解映射嵌套 bean,而无需使用 MappingStrategy。

The ability to split mappings from input/output columns to member variables of multiple embedded beans has been added through the annotation @CsvRecurse. One root bean is still necessary.

CSV 文件

id,cardNumber,holder
1,1234567 890,abc

根 bean

public class DataSet {

    @CsvBindByName
    private String id;

    @CsvRecurse
    private MyNumber myNumber;

    //getter and setter
}

嵌套bean

public class MyNumber {

    @CsvBindByName
    private String cardNumber;

    @CsvBindByName
    private String holder;

    // getter and setter
}

读书 bean

  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

关于java - OpenCSV:将嵌套 Bean 映射到 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59226581/

相关文章:

java - 在java android中替换字符 '@'

java - 有没有类似preparedStatement.setDefault()的东西?

java - @Transactional 和 AOP 之间的混淆

spring - java.lang.IllegalStateException : A SockJsMessageCodec is required but not available:

java - Spring /速度/Maven/Tomcat - "requested resource is not available"

Java Spring Boot 配置标准

jsf - 实现托管 JAVABean 会引发错误 : "Can' t instantiate class"

java - 响应中没有 namespace 的 SOAP(Spring Boot)

java - 我应该如何管理对 ArrayDeque 的多线程并发访问?

java - JSF 2 : property on bean assumed to be written instead of read?