Java 使用jackson dataformat csv获取csv的标题
我使用的是Java 使用jackson dataformat csv获取csv的标题,java,csv,jackson,Java,Csv,Jackson,我使用的是jackson数据格式csv库。我想要解析CSV文件。我有以下代码: CsvMapper csvMapper = new CsvMapper(); CsvSchema csvSchema = csvMapper.typedSchemaFor(Map.class).withHeader(); List<Map<String, String>> csvRows; try { MappingIt
jackson数据格式csv
库。我想要解析CSV
文件。我有以下代码:
CsvMapper csvMapper = new CsvMapper();
CsvSchema csvSchema = csvMapper.typedSchemaFor(Map.class).withHeader();
List<Map<String, String>> csvRows;
try {
MappingIterator<Map<String, String>> it = csvMapper.readerFor(Map.class)
.with(csvSchema.withColumnSeparator(';'))
.readValues(file.getInputStream());
csvRows = it.readAll();
} catch (Exception ex) {
log.error("Unable to read csv document: ", ex);
}
但是,它是空对象。我也是这样做的:
csvSchema.column(0)
我得到一个错误:
Method threw 'java.lang.ArrayIndexOutOfBoundsException' exception.
显然,columns对象是空的。为什么?如何从
CSV
获取列名数组?如果您需要列名,可以将它们作为映射迭代器返回的映射中的键:
CsvMapper csvMapper = new CsvMapper();
CsvSchema csvSchema = csvMapper.typedSchemaFor(Map.class).withHeader();
MappingIterator<Map<String, String>> it = csvMapper.readerFor(Map.class)
.with(csvSchema.withColumnSeparator(','))
.readValues(csvFile);
System.out.println("Column names: " + it.next().keySet());
CsvMapper CsvMapper=new CsvMapper();
CsvSchema CsvSchema=csvMapper.typedSchemaFor(Map.class).withHeader();
MappingIterator it=csvMapper.reader(Map.class)
.with(csvSchema.with列分隔符(','))
.readValues(csvFile);
System.out.println(“列名:+it.next().keySet());
在从MappingIterator
一个有效的例子:
CsvSchema schema=(CsvSchema)objectMappingIterator.getParser().getSchema();
迭代器迭代器=schema.Iterator();
while(iterator.hasNext()){
CsvSchema.Column next=迭代器.next();
next.getName();
}
CsvMapper csvMapper = new CsvMapper();
CsvSchema csvSchema = csvMapper.typedSchemaFor(Map.class).withHeader();
MappingIterator<Map<String, String>> it = csvMapper.readerFor(Map.class)
.with(csvSchema.withColumnSeparator(','))
.readValues(csvFile);
System.out.println("Column names: " + it.next().keySet());