Моя проблема заключается в том, что мне нужно проанализировать файлы CSV с произвольными столбцами / порядком в известном домене POJO (скажем, Person). Я могу определить, какие столбцы мне нужно обработать, игнорируя остальные.
Опция CsvParser.Feature.IGNORE_TRAILING_UNMAPPABLE "показалась мне именно тем, что мне нужно, но столбцы, которые мне нужно обработать, необязательно сгруппированы в начале файла CSV, и я не могу заставить пользователя" переупорядочить "столбцы их загруженных файлов CSV. Кроме того, иногда я не получаю строку заголовка, но пользовательский интерфейс вынуждает пользователя идентифицировать столбцы и передает эту информацию.
Например, у меня есть следующий файл CSV:
First Name,Last Name,Nickname,DOB,Occupation,Postal Code
Freddy,Benson,Ruprecht,08/14/45,Con Artist,76701
Lawrence,Jamieson,Prince,03/14/33,Con Artist,5201
Janet,Colgate,Jackal,03/13/55,Con Artist,90401
Мне нужны только 4 из 6 столбцов (Имя, Фамилия, DOB, Почтовый индекс), так как мой POJO для Персона включает только эти поля:
public class Person {
private String firstName;
private String lastName;
private LocalDate dob;
private String postalCode;
}
Я определил CsvSchema, набранную для Person, и указал интересующие меня столбцы в порядке (Имя, Фамилия, IGNORE, DOB, IGNORE2, Почтовый код), так как я хотел бы пропустить столбцы (Nickname, Occupation) , Однако столбцы «IGNORE» игнорируются при отображении в десериализаторе, и в итоге я получаю значения «Nickname» для «DOB», что приводит к недопустимым значениям для поля DOB.