2016-04-26 65 views
0

我有一個300k行的JSON文件,我試圖在Node中使用JSONStream進行解析。從文檔,執行以下操作的時候,我期待第10行的文件,以輸出到控制檯,但是我得到了整個文檔作爲一個字符串,每行之間\n字符:NodeJS JSONStream將數據作爲一個長字符串返回

var fs = require('fs'); 
var JSONStream = require('JSONStream'); 

var i = 0; 

var stream = fs.createReadStream('test.json', {encoding: 'utf8'}) 


stream.pipe(JSONStream.parse('*')) 

stream.on('data', function(data) { 


    if(i < 10){ 
    console.log(i, data) 
    } 
    i++; 
}); 

不應該JSONStream.parse("*")是......解析JSON?我在這裏做錯了什麼?

+0

如何在您的JSON文件結構?也許你應該「解決」解析函數中的子對象(而不是地址根) – lipp

+0

它的結構爲JSON,不知道這裏有什麼變化空間。 '[{'key.one':'value'...},... {'key.one':'value'...}]'。每個對象都在一個新行上。 – Jascination

+0

也許你應該使用子操作符'[]'來獲取每個單個數組項(goessner.net/articles/JsonPath)。 '*'可能會給你根對象/數組。 – lipp

回答

1

你必須註冊在jsonstream obj中的事件處理程序:

var jsonStream = JSONStream.parse('*') 
stream.pipe(jsonStream) 
jsonStream.on('data', function(data) { 
    // process data 
}) 
+0

完美,謝謝! – Jascination

相關問題