所以我使用opencsv将csv转换为bean。这一切都适用于原始值,但我想使用枚举,这给出了一些问题。
我正在浏览代码,似乎我需要完全实现一个新的mappingstrategy才能设置自定义转换器。有更好的方法吗?
转换的当前代码:
CsvToBean<MyType> csvBean = new CsvToBeanBuilder<MyType>(new FileReader(csvFile))
.withType(MyType.class)
.withIgnoreLeadingWhiteSpace(true)
.withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_QUOTES)
.build();
我在2012年发现了一些与此相关的问题,但答案不再适用于当前的opencsv版本(4.2)。
好吧,事实证明有一个@CsvCustomBindByName(column = 'foo', converter = Bar.class)
注释完全符合我的要求。这个类只需要是<T> extends AbstractBeanField<T>
类型
所以我在类似的情况下所做的事情,我有一堆基元,但我想要一个复杂的对象(一个带有嵌入对象的对象)就是拥有一个中间对象。我称之为DTO(数据传输对象),虽然我确信它有一个更合适的名称,openCSV将填充,然后DTO可以从它包含的原语构建我想要的复杂对象。