我使用JSONStream解析来自服务器的数据,数据可以是{"error":"SomeError"}或者{“SomeError”:{“id”:123}};
我的代码是这样的
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上错了?
提前谢谢。
发布于 2014-05-09 00:41:41
Node.js Stream documentation中的解释。
“end”事件的回调函数没有数据参数。改为侦听“data”事件。在管道的情况下,侦听目的地上的pipe事件。
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的更多信息(代码)。顺便说一句,Stream模块仍然被标记为不稳定。
发布于 2014-05-09 11:26:03
好的,我使用以下方法来解决这个问题:
var request({url: 'http://XXX/articles.json'})
dest.pipe(articleIDParser)
dest.pipe(errorParser);https://stackoverflow.com/questions/23546655
复制相似问题