如何将 csv 文件映射到 java 中的 pojo class

How to map csv file to pojo class in java

我正在使用 java maven plugin.I 想在 pojo class 中获取 employee.csv 文件记录。 这个 pojo class 我从 employee.csv 头生成,pojo class 的所有字段都是字符串 type.now 我想映射 employee.csv 到生成的 pojo class.my 要求是我不想指定列名 manually.because 如果我更改 csv 文件,那么我必须再次更改我的代码,以便它应该动态映射到任何文件。例如

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

我想将其映射到我已经拥有的 pojo

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

您可以使用 openCSV jar 来读取数据,然后您可以将每个列值映射到 class 属性。 由于安全原因,我无法与您分享我的代码。

uniVocity-parsers 让您轻松映射您的 pojo。

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.
    ...

}

解析:

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();

披露:我是这个图书馆的作者。它是开源且免费的(Apache V2.0 许可证)。