2013-03-19 63 views
1

我正在開發一些項目,我需要讀取一些文件並將數組分割(使用\ n - 新行)字符串作爲數組。這意味着從fs.readFileSync(filepath, 'utf8').split('\n'); 讀取文件的輸出是字符串,我需要將其轉換爲數組,但有問題,因爲我不知道如何。有輸入數據的一些例子:Node.js:讀取文件並將字符串作爲數組放入數組

[[164,17567,160,[]],[166,8675,103,[]], 
[[164,17567,160,[]],[166,8675,103,[]], 
[[164,17567,160,[]],[166,8675,103,[]], 
[[164,17567,160,[]],[166,8675,103,[]] 

我試圖把它與for循環,但我不能從字符串轉換成數組不知何故,輸出變成這樣:

"[[164,17567,160,[]],[166,8675,103,[]]", 
"[[164,17567,160,[]],[166,8675,103,[]]", 
"[[164,17567,160,[]],[166,8675,103,[]]", 
"[[164,17567,160,[]],[166,8675,103,[]]" 

回答

5

我建議你繼續用換行符分割,然後重新組合成沒有換行符的單個字符串,最後使用JSON.parse解析。

var lines = fs.readFileSync(filepath, 'utf8').split('\n'); 
var rawData = ''; 
for (var l in lines){ 
    var line = lines[l]; 
    rawdata += line; 
} 
var data = JSON.parse('[' + rawdata + ']'); 

但是!它似乎(除非是錯字)每行都有一個額外的開放方括號。這些必須在解析之前被刪除,如果您有任何控制權,最好從源數據中刪除:)

另外,爲了使其有效JSON,您必須將所有內容包裝在「[]」中如上所示。

+1

'var data = require(filepath);'對.json文件做同樣的技巧。 – generalhenry 2013-03-19 08:06:34

+0

我已經試着解析它,但是這個函數從數組中刪除了一些對象。在最後解析的數組成爲用逗號逗號的數字列表。 – user1257255 2013-03-19 11:48:53

+0

我試着根據您的評論改進答案,請看看 – 2013-03-19 16:15:57

相關問題