How to map csv file to pojo class in java

11,888

uniVocity-parsers allows you to map your pojo easily.

class Employee {

    @Trim
    @LowerCase
    @Parsed
    private String firstName;

    @Parsed
    private String lastName;

    @NullString(nulls = { "?", "-" }) // if the value parsed in the quantity column is "?" or "-", it will be replaced by null.
    @Parsed(defaultNullRead = "0") // if a value resolves to null, it will be converted to the String "0".
    private Integer salary; // The attribute name will be matched against the column header in the file automatically.
    ...

}

To parse:

BeanListProcessor<Employee> rowProcessor = new BeanListProcessor<Employee>(Employee.class);

CsvParserSettings parserSettings = new CsvParserSettings();
parserSettings.setRowProcessor(rowProcessor);
parserSettings.setHeaderExtractionEnabled(true);

CsvParser parser = new CsvParser(parserSettings);

//And parse!
//this submits all rows parsed from the input to the BeanListProcessor
parser.parse(new FileReader(new File("/path/to/your.csv"))); 

List<Employee> beans = rowProcessor.getBeans();

Disclosure: I am the author of this library. It's open-source and free (Apache V2.0 license).

Share:
11,888
Chaitanya Ghumare
Author by

Chaitanya Ghumare

Updated on June 04, 2022

Comments

  • Chaitanya Ghumare
    Chaitanya Ghumare about 2 years

    I am using java maven plugin.I want to fetch employee.csv file records in pojo class. this pojo class I am generating from employee.csv header and all fields of pojo class are String type.now I want to map employee.csv to generated pojo class.my requirement is I dont want to specify column names manually.because if I change csv file then again I have to chane my code so it should dynamically map with any file. for instance

    firstName,lastName,title,salary 
    john,karter,manager,54372
    

    I want to map this to pojo which I have already

    public class Employee
    {
      private String firstName;
      private String lastName;
      .
      .
      //getters and setters 
      //toString()
    }