为什么 Apache Commons CSVParser.getHeaderMap() 总是 return null?
Why does Apache Commons CSVParser.getHeaderMap() always return null?
使用 Apache Commons CSV 阅读以下 TSV 片段时:
Name DOB SIN Address, contact information
"Patience Middleton" "18-4-87" 720463771 "varius Cras sem aliquam taciti fames hendrerit tempor"
这是我的代码:
CSVFormat format = CSVFormat.newFormat('\t').withQuote('"');
CSVParser parsed = CSVParser.parse(csvData, format);
List<CSVRecord> record = parsed.getRecords();
System.out.println(parsed.getHeaderMap().toString());
但是我总是得到 NullPointerException
说明 parsed.getHeaderMap() == null
。
根据 API (https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVParser.html),该方法可能 return 按列顺序迭代的 header 映射的副本。
我的代码或 CSV 文件有问题吗?图书馆失败了吗?
默认情况下 CSVParser
假设没有 header 行并将第一行解析为常规数据。您需要通过在 CSVFormat
:
上调用 withHeader()
来明确告诉它您希望将 CSV 文件的第一行解释为 header
CSVParser parsed = CSVParser.parse(csvData,
CSVFormat.newFormat('\t').withQuote('"').withHeader());
使用 Apache Commons CSV 阅读以下 TSV 片段时:
Name DOB SIN Address, contact information
"Patience Middleton" "18-4-87" 720463771 "varius Cras sem aliquam taciti fames hendrerit tempor"
这是我的代码:
CSVFormat format = CSVFormat.newFormat('\t').withQuote('"');
CSVParser parsed = CSVParser.parse(csvData, format);
List<CSVRecord> record = parsed.getRecords();
System.out.println(parsed.getHeaderMap().toString());
但是我总是得到 NullPointerException
说明 parsed.getHeaderMap() == null
。
根据 API (https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVParser.html),该方法可能 return 按列顺序迭代的 header 映射的副本。
我的代码或 CSV 文件有问题吗?图书馆失败了吗?
默认情况下 CSVParser
假设没有 header 行并将第一行解析为常规数据。您需要通过在 CSVFormat
:
withHeader()
来明确告诉它您希望将 CSV 文件的第一行解释为 header
CSVParser parsed = CSVParser.parse(csvData,
CSVFormat.newFormat('\t').withQuote('"').withHeader());