OpenCSV-注册自定义转换器

时间:2018-06-26 06:08:25

标签: java enums javabeans opencsv

所以我正在使用opencsv将csv转换为bean。 这一切都适用于原始值,但是我想使用枚举,这会带来一些问题。

我正在检查代码,看来我需要完全实现新的映射策略才能做到这一点,只是为了设置自定义转换器。有更好的方法吗?

当前转换代码:

CsvToBean<MyType> csvBean = new CsvToBeanBuilder<MyType>(new FileReader(csvFile))
                 .withType(MyType.class)
                 .withIgnoreLeadingWhiteSpace(true)
                 .withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_QUOTES)
                 .build();

2012年,我发现了一些与此有关的问题,但答案不再适用于当前的opencsv版本(4.2)。

2 个答案:

答案 0 :(得分:1)

好吧,事实证明这里有@CsvCustomBindByName(column = 'foo', converter = Bar.class)

正是我想要的注释。此类仅需为<T> extends AbstractBeanField<T>

类型

答案 1 :(得分:0)

因此,在类似的情况下,我有很多原始对象,但是我想要一个复杂的对象(一个带有嵌入式对象的对象),要做一个中间对象。我称它们为DTO(数据传输对象),尽管我确信有一个更合适的名称,它将填充openCSV,然后DTO可以从其包含的基元中构建所需的复杂对象。