Парсинг потоков JSON с использованием JSONPath и JSONStream

У меня есть поток данных, как это:

{"foo": 1} {"bar": 2}

Примечание: между этими картами нет запятых.

Я хочу прочитать этот поток в node.js, чтобы я мог захватить две карты, как показано выше. Я пытался сделать это с JSONStream, который хорошо идентифицирует отдельные сущности JSON в потоке, но который несколько изменяет данные. Итак, код, который я запускаю:

var jsonStream = require('JSONStream');
var es = require('event-stream');

var parser = jsonStream.parse('$*');
process.stdin.pipe(parser)
.pipe(es.mapSync(function (data) {
    console.log(data);
}));

И это выводит:

{ value: 1, key: 'foo' }
{ value: 2, key: 'bar' }

Я хочу вывести неизмененные карты JSON:

{"foo": 1}
{"bar": 2}

Кто-нибудь знает, как я могу добиться этого, с JSONStream или что-то еще?

1 ответ

Похоже, JSONStream - это больше, чем нужно для решения этой проблемы, под капотом он использует jsonparse, поэтому решение моей проблемы:

var Parser = require('jsonparse');

var parser = new Parser();
process.stdin.on("readable", function () {
    var chunk = process.stdin.read();
    if (chunk) {
        parser.write(chunk);
    }
});

parser.onValue = function (v) {
    if (this.stack.length === 0) {
        console.log(v);
    }
};
Другие вопросы по тегам