用Jackson CSV将CSV解析为POJO列表

时间:2018-07-03 15:25:35

标签: java csv jackson jackson-dataformat-csv

我有一个字符串,其中包含CSV数据,并想将其解析为POJO列表。

我如何使用Jackson CSV做到这一点?

奖金:我该如何使用CSV标头?


两次失败的尝试:

CsvMapper mapper = new CsvMapper();
// First attempt 
CsvSchema schema = mapper.schemaFor(POJO.class); 
// Second attempt
CsvSchema schema =  CsvSchema schema = CsvSchema.emptySchema().withHeader();

System.out.println(schema.usesHeader());
String content = new String(inputFile.getBytes());
MappingIterator<POJO> it = mapper.readerFor(POJO.class).with(schema).readValues(content);

return it.readAll();

第一次尝试以随机顺序填充属性,而不是CSV列顺序或POJO属性的顺序。

第二次尝试给出了以下错误:

Unrecognized field "attribute2" (class uk.ac.packagename.POJO), not marked as ignorable (6 known properties: "attribute2", "attribute3", "attribute4", "attribute5", "attribute6", "attribute1"]) at [Source: java.io.StringReader@617bb5db; line: 2, column: 14] (through reference chain: uk.ac.packagename.POJO["attribute2"])

1 个答案:

答案 0 :(得分:0)

事实证明,由于我的CSV来自MultipartFile,是文件上传的一部分,因此在前面添加了一个不可见的字符。 (虽然不知道为什么)

我通过过滤原始CSV字符串中的非字母数字字符来解决此问题:

content.replaceAll("^[\\W]","");

然后标记为“第二次尝试”的方法可以完美地工作。