我试图使用OpenCSV读取CSV到POJO。当我尝试解析CSV时,我得到以下错误:
Header is missing required fields [LAST NAME]. The list of headers encountered is [Last Name,First Name,User Name,Email,Roles].
我不确定为什么会发生这个错误,因为'姓氏'列存在于CSV文件中。
CSV为:
Last Name,First Name,User Name,Email,Roles
Test1,Test2,Test3,Test4,Test5
POJO类是:
@NoArgsConstructor
@Getter
public class SimpleUser {
@CsvBindByName(column = "First Name", required = true)
private String firstName;
@CsvBindByName(column = "Last Name", required = true)
private String lastName;
@CsvBindByName(column = "Email", required = true)
private String email;
@CsvBindByName(column = "User Name", required = true)
private String userName;
@CsvBindAndSplitByName(column = "Roles", elementType = Double.class, collectionType = LinkedList.class)
private List<String> roles;
}
OpenCSV代码是:
private List<SimpleUser> getCsvUsersFromCsv(String fileLocation) {
MappingStrategy<SimpleUser> strategy = new FuzzyMappingStrategyBuilder<SimpleUser>().build();
strategy.setType(SimpleUser.class);
try (Reader reader = new FileReader(fileLocation)) {
return new CsvToBeanBuilder(reader)
.withMappingStrategy(strategy)
.build()
.parse();
}
}
上面我使用了FuzzyMappingStrategyBuilder只是为了看看它是否会改变任何东西,但没有。
如有任何帮助,不胜感激。
我使用的是OpenCSV版本5.5和Java 8。
我发现在我的csv文件中有一个隐藏字符。在使用新文件进行测试后,它按预期工作。