首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSONStream使用不同的解析器处理同一数据

JSONStream使用不同的解析器处理同一数据
EN

Stack Overflow用户
提问于 2014-05-08 23:52:05
回答 2查看 512关注 0票数 0

我使用JSONStream解析来自服务器的数据,数据可以是{"error":"SomeError"}或者{“SomeError”:{“id”:123}};

我的代码是这样的

代码语言:javascript
复制
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上错了?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-05-09 00:41:41

Node.js Stream documentation中的解释。

“end”事件的回调函数没有数据参数。改为侦听“data”事件。在管道的情况下,侦听目的地上的pipe事件。

代码语言:javascript
复制
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模块仍然被标记为不稳定。

票数 0
EN

Stack Overflow用户

发布于 2014-05-09 11:26:03

好的,我使用以下方法来解决这个问题:

代码语言:javascript
复制
var request({url: 'http://XXX/articles.json'})
dest.pipe(articleIDParser)
dest.pipe(errorParser);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23546655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档