首页 > 解决方案 > Bean -> Csv 与 OpenCsv 的自定义值映射

问题描述

OpenCsv 有没有办法以自定义方式将类字段转换为 csv 列,而不需要自定义 DTO 或额外的自定义字段?

在将 bean 序列化为 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));

标签: javaopencsv

解决方案


推荐阅读