javascript - 获取 JSON 流的内容

标签 javascript json node.js

在 Node.js 中开发一个机器人,该机器人扩展了另一个机器人创建的数据。该机器人将其所有数据输出到 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}
})
  }))

最佳答案

有几个问题。 您似乎混合了 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);

希望这有帮助。

关于javascript - 获取 JSON 流的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41971756/

相关文章:

javascript - 使用 ramda 实现自定义 reducer

node.js - Perl 在 Lambda 函数中不可用(运行时为 Node.js 8.10)

javascript - 如何让 Javascript 停止从展开/折叠栏中删除我的填充

javascript - 在特定条件下使用 jquery 删除类以正确对齐子菜单

html - REST API,为什么不用 HTML 而用 JSON?

java - 如何通过浏览器/ postman 发送 GET 请求中的 json 数据?

MySQL json 函数 - 按 DATE 查询

javascript - 尽管使用 await 关键字,方法返回的 promise 没有完全执行?

node.js - 如何在服务器上不需要nodejs的情况下部署asp.net core网站?

javascript - 如何从内部嵌套函数调用父函数?