将单个 CSV/TSV 字符串转换为 Java 对象?

Jef*_*fLL 3 java csv tsv

是否有一个简单的 API 接受一个 csv 或 tsv 字符串并将其转换为一个对象,而不是将整个 CSV 文件转换为一个对象?到目前为止,我发现的 api 是面向 csv/tsv 文件到对象列表的。

显然,我可以拆分 String 并调用构造函数,但想知道是否有我可以使用的干净 api。

nev*_*219 5

你可以用Jackson做到这一点。它看起来与其他答案非常相似,但根据他们的测试似乎比 SuperCSV 表现更好。

定义您的 POJO(注释和构造函数似乎都是必需的):

@JsonPropertyOrder({ "foo", "bar" })
public class FooBar {

    private String foo;
    private String bar;

    public FooBar() {
    }

    // Setters, getters, toString()
}
Run Code Online (Sandbox Code Playgroud)

然后解析它:

String input = "1,2\n3,4";
StringReader reader = new StringReader(input);
CsvMapper m = new CsvMapper();
CsvSchema schema = m.schemaFor(FooBar.class).withoutHeader().withLineSeparator("\n").withColumnSeparator(',');
try {
    MappingIterator<FooBar> r = m.reader(FooBar.class).with(schema).readValues(reader);
    while (r.hasNext()) {
        System.out.println(r.nextValue());
    }

} catch (JsonProcessingException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)