【发布时间】:2022-12-07 04:24:36
【问题描述】:
我正在尝试使用 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 只是为了看看它是否会改变任何东西但没有。
任何帮助,将不胜感激。
我在 Java 8 中使用 OpenCSV 5.5 版。
【问题讨论】: