使用jackson-dataformat-csv从CSV中解析新行双引号



我有以下CSV格式:

id,name,description,age
23,Anna,"Self-made
Chef
Shoemaker",23

双引号只在属性为多行时出现。虽然我已经能够正确读取正常的CSV:

@Bean
public CsvMapper csvMapper() {
CsvMapper csvMapper = new CsvMapper();
csvMapper.registerModule(new JavaTimeModule());
csvMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
return csvMapper;
}

我试着添加一个新功能:

csvMapper.configure(Feature.FAIL_ON_MISSING_COLUMNS, true);

但是它使库跳过失败的行。如何解析给定的格式并将整个Self-maden Chefn Shoemaker放入description属性中?

根据我对CSVDecoder类(链接)中的代码的阅读,版本2.14中的Jackson CSV解析器将正确解析具有嵌入换行符的双引号字符串。寻找_nextQuotedString方法。不需要设置任何属性来启用此功能。这是无条件发生的。

确实,它看起来像相关的代码至少5年来没有改变。

所以…如果CSV解析器不适合您(没有Feature),我的诊断是:

  • 如果你使用的是旧版本的Jackson,
  • 或您所看到的明显不完整的值被注入到 CSV解析之后的某处/以某种方式

如果这不能解决您的问题,请在问题中添加一个最小可重复的示例,并告诉我们您正在使用的Jackson依赖项的版本。

最新更新