2

次のようなデータストリームがあります。

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

注: これらのマップ間にコンマはありません。

上記のように、2 つのマップをキャプチャできるように、このストリームを node.js で読み取りたいと考えています。これは、ストリーム内の個別の 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 などを使用して、これを達成する方法を知っている人はいますか?

4

1 に答える 1

2

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);
    }
};
于 2016-09-28T02:42:06.533 に答える