2016-04-26 5 views
0

У меня есть файл JSON длиной 300 тыс., Который я пытаюсь проанализировать в узле с помощью 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

как структурированная файл JS? возможно, вы должны «адресовать» вспомогательные объекты в функции синтаксического анализа (а не адресовать корень). – 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