我有这样的数据流:

{"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或其他方式实现这一目标?

最佳答案

看起来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);
    }
};

关于json - 使用JSONPath和JSONStream解析json流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39736627/

10-10 00:44