获取JSON流的内容

时间:2017-02-01 04:10:23

标签: javascript json node.js

使用Node.js中的bot来扩展另一个bot创建的数据。 Bot将其所有数据输出到JSON页面https://mee6.xyz/levels/267482689529970698?json=1

但是我看不到JSONStream产生的数据的控制台输出。 我如何才能将它用于我的扩展系统?

var request = require('request')
  , JSONStream = require('JSONStream')
  , es = require('event-stream')

request({url: 'https://mee6.xyz/levels/267482689529970698?json=1'})
  .pipe(JSONStream.parse('rows.*'))
  .pipe(es.mapSync(function (data) {
    console.error(data)
var stream = JSONStream.parse(['rows', true, 'doc']) //rows, ANYTHING, doc

stream.on('data', function(data) {
  console.log('received:', data);
});
//emits anything from _before_ the first match
stream.on('header', function (data) {
  console.log('header:', data) // => {"total_rows":129,"offset":0}
})
  }))

1 个答案:

答案 0 :(得分:1)

有几个问题。 您似乎已经混合了JSONStream文档中描述的两种方法。

首先,您要求的JSON根本不包含任何名称为' row'的字段。这就是为什么这不起作用:.pipe(JSONStream.parse('rows.*'))

要查看输出,您可以执行以下操作:



request({url: 'https://mee6.xyz/levels/267482689529970698?json=1'})
	//So I'm getting all the players records
	.pipe(JSONStream.parse('players.*'))
	.pipe(es.mapSync(function (data) {
		console.log(data);
	}));




结帐JSONStream和JSONPath文档。

第二个是创建了这个流stream = JSONStream.parse(['rows', true, 'doc']),然后就丢失了。你注意使用它。 所以如果你不喜欢第一种方式:



var stream = JSONStream.parse(['players']);
stream.on('data', function(data) {
	console.log('received:', data);
});

stream.on('header', function (data) {
	console.log('header:', data);
});

//Pipe your request into created json stream
request({url: 'https://mee6.xyz/levels/267482689529970698?json=1'})
	.pipe(stream);




希望这有帮助。