使用OpenCSV 5.9
我应该如何配置我的CsvToBeanBuilder
在我的POJO上将空字符串转换为null。例如,我希望以下POJO的“lastName”具有null
值-而不是值""
。我认为设置.withFieldAsNull(CSVReaderNullFieldIndicator.BOTH)
可以工作,但我仍然看到空字符串作为lastName
的值,而不是null
CSV示例
"FIRST_NAME","LAST_NAME"
"Bob",""
字符串
POJO
@Data
@NoArgsConstructor
@EqualsAndHashCode
public class Person {
@CsvBindByName(column = "FIRST_NAME")
private String firstName;
@CsvBindByName(column = "LAST_NAME")
private String lastName;
}
型
解析器
@Slf4j
@Component
@Qualifier("CsvParser")
public class CsvParser implements FileParser {
@Override
public List<Person> parse(InputStream inputStream) {
log.debug("Parsing InputStream as CSV");
return new CsvToBeanBuilder<Person>(new CSVReader(new InputStreamReader(inputStream)))
.withType(Person.class)
.withSeparator(',')
.withIgnoreLeadingWhiteSpace(true)
.withIgnoreEmptyLine(true)
.withFieldAsNull(CSVReaderNullFieldIndicator.BOTH)
.build()
.parse();
}
}
型
Pom依赖
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.9</version>
</dependency>
型
1条答案
按热度按时间0ejtzxu11#
我最终只是写了一个自定义转换器,并使用
@CsvCustomBindByName
。POJO
字符串
转换器
型