Парсинг CSV на java

Я пытаюсь научиться языку джава с полного нуля, до этого с кодом не сталкивался вообще. на курсе выполняю задание по работе с CSV. Вроде почти сделал, но никак не могу определиться с параметром метода для parce CSV, что в него передать?? Заранее спасибо. Если будут замечания по коду буду рад исправить. Прошу прощения за отнятое время.

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.opencsv.CSVReader;
import com.opencsv.bean.ColumnPositionMappingStrategy;
import com.opencsv.bean.CsvToBean;
import com.opencsv.bean.CsvToBeanBuilder;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Main {
    public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException {
        String[] columnMapping = {"id", "firstName", "lastName", "country", "age"};
        String fileName = "data.xml";
        List<Employee> list = parseXML(new String[]{"data.xml"});
        String json = listToJson(list);
        List<Employee> listCsv = parseCSV(new String[]{"data.csv"});

        String jsonCSV = listToJson(listCsv);
        writeString(json);
    }

    private static List<Employee> parseCSV(String[] columnMapping) {
        List<Employee> staff = null;
        try (CSVReader csvReader = new CSVReader(new FileReader("data.csv"))) {
            ColumnPositionMappingStrategy<Employee> strategy =
                    new ColumnPositionMappingStrategy<>();
            strategy.setType(Employee.class);
            strategy.setColumnMapping("id", "firstName", "lastName", "country", "age");
            CsvToBean<Employee> csv = new CsvToBeanBuilder<Employee>(csvReader)
                    .withMappingStrategy(strategy)
                    .build();
            staff = csv.parse();
            staff.forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return staff;
    }

Ответы (1 шт):

Автор решения: Дмитрий

Чтобы спарсить CSV, не нужно столько кода, все на много проще:

import com.opencsv.bean.CsvToBeanBuilder;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;

public class Main {

    public static void main(String[] args) throws IOException {
        List<Employee> listCsv = parseCSV(Employee.class, "data.csv");
        listCsv.forEach(System.out::println);
    }

    private static <T> List<T> parseCSV(Class<T> modelClass, String fileName) throws IOException {
        return new CsvToBeanBuilder<T>(new FileReader(fileName))
                .withType(modelClass)
                .withSeparator(';')
                .build().parse();
    }

}

import com.opencsv.bean.CsvBindByName;

@lombok.Data
public class Employee {
    @CsvBindByName(column = "id")
    private String id;
    @CsvBindByName(column = "firstName")
    private String firstName;
    @CsvBindByName(column = "lastName")
    private String lastName;
    @CsvBindByName(column = "country")
    private String country;
    @CsvBindByName(column = "age")
    private String age;
}
→ Ссылка