小编Flo*_*eck的帖子

Java Jackson CSV:空标题字段

我正在尝试将一个大型 csv 文件映射到一个带有 jackson csv 的类。该 csv 文件根本没有标准化,这导致了几个问题。

为了给大家一个印象,我创建了一个代表文件:

,B,C,D,E,F?F,G,H H,I (I)
0,AAA,20. Jan.,10,A,5,AA: AAAA,1,A?AAA
1,BBB,05-Dez-14,12,BBB,1,BB: BBBB,32,BBB
2,CCCC,28. Jun.,80,CCCC,2,CCCC: CCCC,1,CCC / CCC
Run Code Online (Sandbox Code Playgroud)

第一行代表标题,第一列代表 id。Jackson CsvMapper 无法映射第一列,因为它是空名称。

CsvMapper mapper = new CsvMapper();
CsvSchema bootstrapSchema = CsvSchema.builder()
                .setColumnSeparator(',')
                .setUseHeader(true)
                .setStrictHeaders(true)
                .setSkipFirstDataRow(true)
                .addColumn("", CsvSchema.ColumnType.NUMBER)
                .addColumn("B", CsvSchema.ColumnType.STRING)
                .addColumn("C", CsvSchema.ColumnType.STRING)
                .addColumn("D", CsvSchema.ColumnType.NUMBER)
                .addColumn("E", CsvSchema.ColumnType.STRING)
                .addColumn("F?F", CsvSchema.ColumnType.NUMBER)
                .addColumn("G", CsvSchema.ColumnType.STRING)
                .addColumn("H H", CsvSchema.ColumnType.NUMBER)
                .addColumn("I (I)", CsvSchema.ColumnType.STRING)
                .build();

        //File file = new ClassPathResource(fileName).getFile();
        MappingIterator<POJO> readValues =
                mapper.reader(POJO.class).with(bootstrapSchema).readValues(file);

        while (readValues.hasNext()){
            logger.info(mapper.writeValueAsString(readValues.nextValue()));
        }
Run Code Online (Sandbox Code Playgroud)

和 POJO 类:

@JsonPropertyOrder({"","B","C","D","E","F?F", "G","H H","I (I)"}) …
Run Code Online (Sandbox Code Playgroud)

java csv jackson

5
推荐指数
1
解决办法
3741
查看次数

标签 统计

csv ×1

jackson ×1

java ×1