OpenCSV - How to map selected columns to Java Bean regardless of order?

前端 未结 10 906
终归单人心
终归单人心 2020-11-30 06:38

I have a CSV file with the following columns: id, fname, telephone, lname, address.

I have a P

10条回答
  •  自闭症患者
    2020-11-30 07:16

    Here is a nice way to do use OpenCSV to do the mapping to POJO generically:

    protected  List mapToCSV(String csvContent, Class mapToClass) {
        CsvToBean csvToBean = new CsvToBean();
    
        Map columnMapping = new HashMap<>();
        Arrays.stream(mapToClass.getDeclaredFields()).forEach(field -> {
            columnMapping.put(field.getName(), field.getName()); 
        });
    
        HeaderColumnNameTranslateMappingStrategy strategy = new HeaderColumnNameTranslateMappingStrategy();
        strategy.setType(mapToClass);
        strategy.setColumnMapping(columnMapping);
    
        CSVReader reader = new CSVReader(new StringReader(csvContent));
        return csvToBean.parse(strategy, reader);
    }
    
    
    public static class MyPojo {
        private String foo, bar;
    
        public void setFoo(String foo) {
            this.foo = foo;
        }
    
        public void setBar(String bar) {
            this.bar = bar;
        }
    }
    

    Then from your test you can use:

    List list = mapToCSV(csvContent, MyPojo.class);
    

提交回复
热议问题