【发布时间】:2020-06-05 00:32:09
【问题描述】:
我有一个由单个空格字符分隔的 CSV 文件,例如 -
<HEADING ROW>
a b c,d,e,f
m n o,p,q
这里,最后一个元素是用逗号分隔符连接的字符串列表。我目前正在使用 OpenCsv 库将此 CSV 文件解析为 POJO 列表。
这是我的 POJO 定义:
import com.opencsv.bean.CsvBindByName;
import java.util.List;
public class Foo {
@CsvBindByName(column = "heading1", required = true)
private Long first;
@CsvBindByName(column = "heading2", required = true)
private String third;
@CsvBindByName(column = "heading3", required = true)
private List<String> fourth;
}
所以这个对象中的所有字段都是不同的类型,尤其是最后一个,它是一个列表类型,并且可以是任何非零长度。 这是我将 CSV 文件映射到这些对象列表的代码:
public List<Foo> readCsvFromPath(final String filePath) throws IOException {
try (Reader reader = Files.newBufferedReader(Paths.get(filePath));) {
CsvToBean<Foo> csvToBean = new CsvToBeanBuilder<Foo>(reader)
.withSeparator(' ')
.withType(Foo.class)
.build();
return csvToBean.parse();
}
}
我不确定的是 CSV 文件的最后一个元素,即“c,d,e,f”或“o,p,q”如何分别映射到 @987654325 之类的列表@ 和{"o", "p", "q"}?
【问题讨论】: