如何解决csvMapper.schemaFor().withHeader()在将List<ADto>出力到csv文件时,不会出现次位为大写字母的字段被出力两次(次位大写和次位小写)的情况
时间: 2023-12-14 17:36:32 浏览: 90
这个问题可能是由于CSV文件中的列名大小写不一致造成的。您可以尝试使用`CsvSchema.Builder#setUseHeader(true)`和`CsvSchema.Builder#setStrictHeaders(true)`方法来解决此问题。
以下是一个示例代码片段:
```java
CsvSchema schema = CsvSchema.builder()
.addColumn("id")
.addColumn("name", CsvSchema.ColumnType.STRING)
.setUseHeader(true)
.setStrictHeaders(true)
.build();
CsvMapper mapper = new CsvMapper();
ObjectWriter writer = mapper.writerFor(ADto.class).with(schema);
List<ADto> data = Arrays.asList(
new ADto(1, "John"),
new ADto(2, "Doe")
);
File outputFile = new File("output.csv");
writer.writeValues(outputFile).writeAll(data);
```
这里的`setUseHeader(true)`方法将确保在CSV文件中生成标题行,而`setStrictHeaders(true)`方法将强制要求在DTO中只使用与模式匹配的列名称。如果DTO中存在与模式不匹配的列名称,则将引发异常。这样可以确保您的DTO中的列名称与CSV文件中的列名称匹配,并且每个列名称仅出现一次。
阅读全文