Node.js JSONStream使用不同的解析器处理一个数据
我使用JSONStream解析来自服务器的数据,数据可以是{error:SomeError}或{articles:[{id:123}]} 我的代码是这样的Node.js JSONStream使用不同的解析器处理一个数据,node.js,jsonstream,Node.js,Jsonstream,我使用JSONStream解析来自服务器的数据,数据可以是{error:SomeError}或{articles:[{id:123}]} 我的代码是这样的 var request = require('request'); var JSONStream = require('JSONStream'); var articleIDParser = JSONStream.parse(['articles', true, 'id']); var errorParser = JSONStream.pa
var request = require('request');
var JSONStream = require('JSONStream');
var articleIDParser = JSONStream.parse(['articles', true, 'id']);
var errorParser = JSONStream.parse(['error']);
request({url: 'http://XXX/articles.json'})
.pipe(articleIDParser).pipe(errorParser);
errorParser.on('data', function(data) {
console.log(data);
});
articleIDParser.on('data', someFuncHere);
但不幸的是,即使服务器返回错误,第二个解析器也无法工作
我在管道功能或JSONStream方面错了吗
提前感谢。Node.js中的解释
“end”事件的回调函数没有数据参数。改为侦听“数据”事件。如果是管道,请在目的地监听事件
var request, JSONStream, articleIDParser, errorParser;
request = require('request');
JSONStream = require('JSONStream');
articleIDParser = JSONStream.parse(['articles', true, 'id']);
errorParser = JSONStream.parse(['error']);
articleIDParser.on('pipe', function (src) {
// some code
});
errorParser.on('pipe', function (src) {
// some code
});
request({url: 'http://XXX/articles.json'}).pipe(articleIDParser).pipe(errorParser);
注意:JSONStream.getParserStream不那么模棱两可,人们可能认为您已经在解析了,而您只是在获取解析器/可写流。如果您仍然有问题,请提供更多关于JSONStream的信息。顺便说一下,流模块仍然被标记为不稳定。我使用以下方法解决了这个问题:
var request({url: 'http://XXX/articles.json'})
dest.pipe(articleIDParser)
dest.pipe(errorParser);
谢谢Kem,这是我的错误,我更正了代码,但问题仍然存在。似乎忽略了第二个解析器