How to read CSV file in java using jackson

This article demonstrates how to read a CSV file in java using Jackson library.

Jackson dataformat csv

Jackson is the most popular library parse JSON in java. In this article I will should you that using Jackson API you can parse CSV file too.

Suppose we have a below CSV content


and let say we want to read the CSV content into below Java class.

public class User {
    private String firstName;
    private String lastName;
    private String age;

    // getters and setters

    public String toString() {
        return "User{" +
                "firstName='" + firstName + '\'' +
                ", lastName='" + lastName + '\'' +
                ", age='" + age + '\'' +

The first thing we need to do is to get jackson-dataformat-csv in our project, here I am working with maven project so we will add its dependency in our pom.xml file as below.


and now to use it’s api to read CSV file we can write Java code as below

public class Main {
    public static void main(String[] args) throws IOException {
        File csvFile = new File("/data/users.csv");
        // Create CSVSchema, here we are having csv with headers in it, so we can
        // use .withHeader option this will instruct Jackson that you need to read first line
        // of CSV file to get the column names, and those column names will be used to map its value
        // with User object's property.
        CsvSchema schema = CsvSchema.emptySchema().withHeader();

        ObjectReader objectReader = new CsvMapper().readerFor(User.class).with(schema);
        MappingIterator<User> userMappingIterator = objectReader.readValues(csvFile);

On executing above code, it will print below text in console.

[User{firstName='Chintan', lastName='Radia', age='29'}]

Jackson DataFormat API comes with many feature, you can read about more about it here jackson-dataformats-text

This blog is open-source on Github.