Разбор CSV в список POJO с Джексоном CSV - PullRequest
0 голосов
/ 03 июля 2018

У меня есть строка, которая содержит данные CSV, и я хочу разобрать ее в список POJO.

Как я могу сделать это с Джексоном CSV?

Бонус: Как я могу сделать так, чтобы он использовал заголовки CSV?

<Ч />

Две мои неудачные попытки:

CsvMapper mapper = new CsvMapper();
// First attempt 
CsvSchema schema = mapper.schemaFor(POJO.class); 
// Second attempt
CsvSchema schema =  CsvSchema schema = CsvSchema.emptySchema().withHeader();

System.out.println(schema.usesHeader());
String content = new String(inputFile.getBytes());
MappingIterator<POJO> it = mapper.readerFor(POJO.class).with(schema).readValues(content);

return it.readAll();

Первая попытка заполняла атрибуты в случайном порядке, который был не в порядке столбцов CSV или в порядке атрибутов POJO.

Вторая попытка выдала следующую ошибку:

Unrecognized field "attribute2" (class uk.ac.packagename.POJO), not marked as ignorable (6 known properties: "attribute2", "attribute3", "attribute4", "attribute5", "attribute6", "attribute1"]) at [Source: java.io.StringReader@617bb5db; line: 2, column: 14] (through reference chain: uk.ac.packagename.POJO["attribute2"])

1 Ответ

0 голосов
/ 04 июля 2018

Оказывается, так как мой CSV исходил из MultipartFile как часть загрузки файла, спереди добавлялся невидимый символ. (хотя не знаю почему)

Я исправил это, отфильтровав необработанную строку CSV для не алфавитно-цифровых символов:

content.replaceAll("^[\\W]","");

Тогда метод, помеченный как «Вторая попытка», работал отлично.

...