CSV表头解析失败求助:Univocity与JsonProperty配置异常
解决Univocity CSV解析表头不匹配问题
你的问题核心是Univocity CSV解析器不识别Jackson的@JsonProperty注解,它只会遵循自身的注解和配置规则处理表头映射,所以才会出现解析到的带空格表头和期望的驼峰命名不匹配的报错。
解决方案1:直接用@Parsed指定CSV表头名称
修改Employee类的注解,在Univocity的@Parsed注解里明确指定CSV文件中的表头字段名:
public class Employee { @Parsed(field = "Last Name") private String lastName; @Parsed(field = "First Name") private String firstName; @Parsed(field = "Address") private String address; // 手动编写getter/setter或保留Lombok注解均可 }
解决方案2:配置解析器自动转换表头格式
如果不想逐个字段指定,可以配置解析器的表头转换规则,自动将带空格的表头转为驼峰命名:
// 创建解析器配置 CsvParserSettings settings = new CsvParserSettings(); // 开启驼峰转换:将"Last Name"转为"lastName" settings.setHeaderNameTransformation(HeaderTransformer.CAMEL_CASE); // 启用表头提取 settings.setHeaderExtractionEnabled(true); // 绑定Employee类处理器 settings.setProcessor(new BeanListProcessor<>(Employee.class)); // 初始化解析器并解析文件 CsvParser parser = new CsvParser(settings); parser.parse(new FileReader("your-employee-file.csv"));
关键说明
你之前尝试的更换Jackson包、调整注解位置等操作无效,因为Univocity的CSV解析逻辑完全独立于Jackson,不需要依赖@JsonProperty来做表头映射,只需专注于Univocity自身的注解和配置即可。
内容的提问来源于stack exchange,提问作者Kumar Saurav
相关产品推荐
相关产品推荐

