如何将 json 块作为文件发送给用户

How to send a json block to the user as a file

我有一个很大的JSON块;将其作为(下载的)文件发送到浏览器的最佳方式是什么?

这是一个示例,如果我的源来自文件,但在我的例子中,我的源不是文件而是一个变量,我需要将此 json 数据发送到浏览器:

var http = require('http');
var fs = require('fs');

var file = fs.createWriteStream("file.jpg");
var request = http.get("http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg", function(response) {
  response.pipe(file);
});

我尝试的代码:

res.setHeader('Content-disposition', 'attachment; filename=myData.json');
res.setHeader('Content-type', 'application/json');
//data is my variable with my JSON block
res.pipe(data);//This is not right!

如果我的问题含糊不清,如果您需要更多说明,请告诉我

听起来您可能想要的是 JSON 流式传输。 EG:您想将一个非常大的 JSON 对象分段发送给客户端(不是一次全部发送,浪费大量内存)。

这里有一个非常好的库可以为您处理这个问题:https://github.com/dominictarr/JSONStream

我不知道您使用的是什么类型的框架(Express?),但这只适用于普通的 http 模块。

var http = require('http');

http.createServer(function (req, res) {
  res.setHeader('Content-disposition', 'attachment;   filename=myfilename');

  var data = { foo: 'bar' };      

  res.write(JSON.stringify(data))
  res.end()

}).listen(1337, '127.0.0.1');