uniVocity 解析器来处理重复的 header 个名字

uniVocity parser to handle duplicate header names

如何使用 BeanParser 读取具有重复列名的 csv 文件。

下面是例子header

Col desc, Col amount, Col desc, Col amount

test, 12.44, test2, 43.44

您可以手动设置 header 个名称:

public class MyClass {

    @Parsed(field = "amount1")
    private BigDecimal amount1;

    @Parsed(field = "amount2")
    private BigDecimal amount2;

    @Parsed(field = "description1")
    private String description1;

    @Parsed(field = "description2")
    private BigDecimal description2;
}

然后:

CsvParserSettings parserSettings = new CsvParserSettings();
parserSettings.setHeaderExtractionEnabled(true); //to read your input headers with duplicates.
parserSettings.setHeaders("description1", "amount1, "description2", "amount2"); //to override the headers in the input with the names you want to work with

然后解析:

List<MyClass> myList = new CsvRoutines(parserSettings).parseAll(MyClass.class, <input>);

也可以在注解中使用字段索引代替字段名,这样就不用担心header个名字了。

希望对您有所帮助