簡體   English   中英

NodeJS:來自遠程資源解析的非常大的JSON

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM