#java #opencsv
Вопрос:
Есть ли способ с помощью OpenCSV преобразовать поле класса в csv-столбец пользовательским способом, без необходимости в пользовательских DTO или дополнительных пользовательских полях?
Я пытаюсь преобразовать внутреннее строковое представление в удобочитаемое представление при сериализации компонента в csv.
Я попытался использовать CsvCustomBindByName для этой цели:
@CsvCustomBindByName(column = "My Column", converter = MyColumnConverter.class)
private String myColumnInternal;
где:
public class MyColumnConverter extends AbstractBeanField {
@Override
protected Object convert(String code) throws CsvDataTypeMismatchException, CsvConstraintViolationException {
return code " foo bar";
}
}
Однако мой пользовательский метод преобразования не собирается во время сериализации bean -> csv.
Для полноты картины — это мой код сериализации:
ColumnPositionMappingStrategy<MyType> mappingStrategy = new ColumnPositionMappingStrategy();
mappingStrategy.setType(MyType.class);
StatefulBeanToCsv<MyType> beanToCsv = new StatefulBeanToCsvBuilder<MyType>(writer)
.withMappingStrategy(mappingStrategy).build();
beanToCsv.write(Collections.singletonList(MyType));