我正在创建一个 bean 处理器并将 setStrictHeaderValidationEnabled 设置为 true。现在我的 CsvParserSettings 正在使用这个 bean 处理器,而后者又被 CSVRoutines 使用。但是在遍历 csvroutines 时,bean 处理器不会验证标题,并且后续行也会转换为具有无效标题的文件的 bean
示例代码-
final BeanProcessor<TestBean> rowProcessor = new BeanProcessor<TestBean>(TestBean.class) {
@Override
public void beanProcessed(TestBean bean, ParsingContext context) {
}
};
rowProcessor.setStrictHeaderValidationEnabled(true);
final CsvParserSettings parserSettings = new CsvParserSettings();
parserSettings.setProcessor(rowProcessor);
parserSettings.setHeaderExtractionEnabled(true);
parserSettings.getFormat().setDelimiter(',');
CsvRoutines routines = new CsvRoutines(parserSettings);
for(TestBean bean : routines.iterate(TestBean.class, inputFile, StandardCharsets.UTF_8)) {
try {
System.out.println(OBJECT_MAPPER.writeValueAsString(bean));
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
注意:TestBean 使用单义性的@Parsed 注解来设置列名。