【问题标题】:Parsing CSV into a POJO list with Jackson CSV使用 Jackson CSV 将 CSV 解析为 POJO 列表
【发布时间】:2018-12-11 23:31:30
【问题描述】:

我有一个字符串,其中包含 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"])

【问题讨论】:

    标签: java csv jackson jackson-dataformat-csv


    【解决方案1】:

    事实证明,因为我的 CSV 作为文件上传的一部分来自 MultipartFile,所以前面添加了一个不可见字符。 (不知道为什么)

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

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

    然后标记为“第二次尝试”的方法完美运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-27
      • 2018-05-13
      • 1970-01-01
      • 2018-02-22
      • 2017-09-06
      • 2014-01-27
      • 2021-02-12
      • 1970-01-01
      相关资源
      最近更新 更多