#java #kotlin #opencsv
Вопрос:
У меня есть такой класс, как :
data class BeanClass (
@CsvBindByName(column = "Id")
val id: Long = -1,
)
и используя это, чтобы преобразовать его в список идентификаторов
val recommendationUpdateList = CSVUtils.convertToBean(file, BeanClass::class.java)
CSVUtils.convertToBean выглядит так :
public static <T> List<T> convertToBean(File file, Class<T> bean) throws IOException {
List<T> csvData = null;
try (Reader reader = new FileReader(file)) {
HeaderColumnNameMappingStrategy<T> strategy =
new HeaderColumnNameMappingStrategy<T>();
strategy.setType(bean);
CsvToBean<T> cb = new CsvToBeanBuilder<T>(reader)
.withType(bean)
.withFieldAsNull(CSVReaderNullFieldIndicator.BOTH)
.withMappingStrategy(strategy)
.build();
csvData = cb.parse();
}
return csvData;
}
Теперь, когда я загружаю такой CSV-файл, он работает нормально
Id
2
ТЕМ не менее, я хочу, чтобы он выдавал ошибку, когда я использую следующий CSV (обратите внимание, что имя заголовка CSV изменилось)
Kd
2
Пожалуйста, предложите способ, с помощью которого заголовок csv может быть проверен на соответствие заголовкам столбцов bean. В настоящее время он выбирает значение по умолчанию -1, также в моем случае использования я не могу проверить на основе значения по умолчанию.
Ответ №1:
Требуется ли добавление, выполняет ли работу:
data class BeanClass (
@CsvBindByName(column = "Id", required = true)
val id: Long = -1
)
Это вызовет исключение csvrequireddemptyexception