JSONStream的基本测试不起作用

时间:2013-10-17 17:04:03

标签: javascript node.js jsonstream

我正在查看node.js中的JSONStream,我正在尝试使用以下小应用程序来处理它:

var JSONStream = require('JSONStream');
var Stream = require('stream');

var s = new Stream();
s.pipe = function(dest) {
  dest.write('{"foo":1}');
  return dest;
};

var parser = JSONStream.parse(/foo/);
s.pipe(parser).pipe(process.stdout);

不幸的是,当在命令行上运行时,这不会向控制台写入任何内容。我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果您重写代码,它会起作用:

var JSONStream = require('JSONStream');
var Stream = require('stream');

var s = new Stream();
s.pipe = function(dest) {
  dest.write('{"foo":1}');
  return dest;
};

var parser = JSONStream.parse();
parser.on('data', function(obj) {
  console.log('obj', obj);
});
s.pipe(parser);

您无法将JSONStream.parse()的输出传递给process.stdout的原因是JSONStream输出对象,而process.stdout只接受字符串(可能还有缓冲区):< / p>

> process.stdout.write({ foo : 1 });
TypeError: invalid data
    at WriteStream.Socket.write (net.js:612:11)
    ...