gpt4 book ai didi

java - 使用 OpenCsv 将 CSV 元素映射到字符串列表?

转载 作者:行者123 更新时间:2023-12-04 04:07:56 26 4
gpt4 key购买 nike

我有一个由单个空格字符分隔的 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”如何分别映射到列表,如 {"c", "d", "e", "f"}{"o", "p", "q"}?

最佳答案

您可以使用 @CsvBindAndSplitByName .

替换这段代码

@CsvBindByName(column = "heading3", required = true)
private List<String> fourth;

@CsvBindAndSplitByName(column = "heading3", required = true, elementType = String.class, splitOn = ",")
private List<String> fourth;

关于java - 使用 OpenCsv 将 CSV 元素映射到字符串列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62206259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com