I have a CSV file with the following columns: id
, fname
, telephone
, lname
, address
.
I have a P
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);