2016-04-26 13 views
0

JSONStreamを使用してNodeで解析しようとしている300k行のJSONファイルがあります。NodeJS JSONStreamは1つの長い文字列としてデータを返します

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++; 
}); 
:以下を実行する際のドキュメントから、私は、しかし、私は、各行の間 \n文字で、文字列として文書全体を取得し、コンソールに出力されるファイルの最初の10行を期待してい

JSONStream.parse("*")しないでください... JSONを解析していますか?私はここで間違って何をしていますか?

+0

を?おそらく、あなたは "parse"関数のサブオブジェクトをアドレス指定する必要があります(そして、ルートには触れません) – lipp

+0

これはJSONとして構造化されています。 '[{'key.one': 'value' ...}、... {'key.one': 'value' ...}]'。各オブジェクトは新しい行にあります。 – Jascination

+0

子演算子 '[]'を使用して各単一の配列項目(goessner.net/articles/JsonPath)を取得する必要があります。 '*'はおそらくあなたにルートオブジェクト/配列を与えます。 – lipp

答えて

1

あなたはjsonstreamのOBJのイベントハンドラに登録する必要があります:あなたのJSONファイルが構成されているか

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

パーフェクト、ありがとう! – Jascination

関連する問題