Ideally I'm looking for a library that allows me to map a .csv contents to an object.
Something like:
public class Person {
private String name;
private int age;
@CsvField("name")
public String getName() {
return this.name;
}
@CsvField("age")
public int getAge() {
return this.age;
}
}
and then say something like:
final Person filledWithDataFromCsv = csvApi.load(csvFilepath, Person.class);
from the given CSV:
#name, age
tom, 11
jim, 32
Does anyone know of such an API, or one that does something similar. I don't want it to use annotations as a must, I just want to be able to load the file with one line of code and a predefined class.
Thanks,
解决方案
JSefa allow you to annotate Java classes that can be used in a serialization and de-serialization process. The tutorial demonstrates how this works with the CsvIOFactory class.
(From the tutorial) Annotating a bean is as simple as specifying the locations of the items in the list of values, and if necessary, you'll need to specify the conversion format:
@CsvDataType()
public class Person {
@CsvField(pos = 1)
String name;
@CsvField(pos = 2, format = "dd.MM.yyyy")
Date birthDate;
}