2016-03-11 111 views
2

當閱讀與Apache下議院CSV以下TSV片段:爲什麼Apache Commons CSVParser.getHeaderMap()總是返回null?

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),該方法可以返回按列順序迭代的標題映射的副本。

我的代碼或CSV文件有問題嗎?圖書館是否失敗?

回答

8

默認情況下,CSVParser假定沒有標題行並將第一行解析爲常規數據。你需要通過調用CSVFormatwithHeader()明確告訴它要被解釋爲頭CSV文件的第一行:

CSVParser parsed = CSVParser.parse(csvData, 
    CSVFormat.newFormat('\t').withQuote('"').withHeader()); 
+2

非常感謝!我在withHeader()函數中看到了可能的參數,並且天真地認爲它們僅用於手動設置標題。 – tribbloid

相關問題