[英]NodeJS: Very large JSON from remote resource parsing
我有一个很大的JSON文件(150k行,〜3mb)来自外部资源,我想知道在NodeJS应用程序下使用它的最佳方法是什么。
目前,我的策略是通过ajax调用获取,解析并存储在缓存中:
var options = {
host: url,
port: port,
path: '/file.json',
headers: {'Authorization': 'Basic ' + new Buffer(username + ':' +password).toString('base64')
}
};
http.get(options, function (res) {
var body = '';
res.on('data', function (chunk) {
body += chunk;
});
res.on('end', function () {
var JsonAsObject = JSON.parse(body);
StatisticsCache.set("Json", JsonAsObject, function(err, success) {
console.log("err is " + err + "success is " + success);
});
})
}).on('error', function (e) {
console.log("Got error: ", e);
});
但是我的经验是这条线:
var JsonAsObject = JSON.parse(body);
永远花费(3分钟),甚至在调试时也无法访问该对象。
最后,我的目标是能够处理信息,
谢谢
使用流解析器,这样就不会立即将所有内容存储在内存中。 它可能仍需要几秒钟才能运行,但是至少您的应用在解析时不会停止。
试试JSONStream :
var request = require('http').request,
parseUrl = require('url').parse,
JSONStream = require('JSONStream');
var url = parseUrl('…');
url.method = 'GET';
var req = request(url, function (res) {
res.pipe(JSONStream.parse()).on('data', function (obj) {
console.log(obj);
});
});
req.end();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.