Javascript 如何解析500mb json文件?

Javascript 如何解析500mb json文件?,javascript,node.js,json,Javascript,Node.js,Json,我的应用程序中有一个上传,它接收一个加密文件。在进行解密时,我正在另一个文件中编写json。完成此操作后,我有一个500MB的json文件 注意:我的json的属性是动态的 如何解析这个json,我读过关于StreamJSON/Parser的文章,但没有实现它 const {parser} = require('stream-json/Parser'); static async _recoverObj(pathAnalise) { let readStream = fs.creat

我的应用程序中有一个上传,它接收一个加密文件。在进行解密时,我正在另一个文件中编写json。完成此操作后,我有一个500MB的json文件

注意:我的json的属性是动态的

如何解析这个json,我读过关于StreamJSON/Parser的文章,但没有实现它

const {parser} = require('stream-json/Parser');

static async _recoverObj(pathAnalise) {

    let readStream = fs.createReadStream(pathAnalise, {encoding: 'utf8', highWaterMark: 1024});

    function createJson(stream) {

        let decipher = crypto.createDecipher('aes-128-ecb', 'AmbientalRuralBR');

        return new Promise((resolve) => {

            stream.on('data', chunk => {

                let newDecrypt = decipher.update(chunk, 'base64', 'utf8');

                fs.appendFile('./data.json', newDecrypt, function() {
                    console.log('Saved!');
                });

            });

            stream.on('end', () => {

                fs.appendFile('./data.json', '"}', function() {
                    resolve();
                });

            });

        });

    }

    const result = await createJson(readStream);

    function getParse() {

        return new Promise((resolve) => {

            let jsonData = './data.json';
            let pipeline = fs.createReadStream(jsonData).pipe(parser());

            let objectCounter = 0;
            pipeline.on('data', data => {

                data.name === 'startObject' && ++objectCounter

            });

            pipeline.on('end', () => {

                console.log(`Found ${objectCounter} objects.`);
                resolve();

            });

        });

    }

    let dataAnalyze = await getParse();

    return dataAnalyze;

}
有人知道怎么做吗

我的解决方案:

我曾经


获得包含json的文本字符串后,您可以使用该字符串将其转换为以后可以与之交互的对象:

var json='{result:true,count:42}'; obj=JSON.parsejson; console.logobj.count; //预期产出:42 console.logobj.result;
//预期输出:trueSo有什么问题?See Alway search的可能重复字符串变量不支持my json的大小。如果不是的话,我早就做了。
const json = require('big-json');

static async _recoverObj(pathAnalise) {

    var readStream = fs.createReadStream(pathAnalise, {encoding: 'utf8', highWaterMark: 1024 * 2});

    function createJson(stream) {

        var decipher = crypto.createDecipher('aes-128-ecb', 'AmbientalRuralBR');

        return new Promise((resolve) => {

            stream.on('data', chunk => {

                var newDecrypt = decipher.update(chunk, 'base64', 'utf8');

                fs.appendFile('./data.json', newDecrypt, function() {
                    console.log('Saved!');
                });

            });

            stream.on('end', () => {
                fs.appendFile('./data.json', '"}', function() {
                    resolve();
                });

            });

        });

    }

    await streamToString(readStream);

    function getParse() {

        return new Promise((resolve) => {

            var jsonData = './max.json';
            var myObj = [];
            const readStream = fs.createReadStream(jsonData);
            const parseStream = json.createParseStream();

            parseStream.on('data', function(pojo) {
                myObj = pojo;
            });

            parseStream.on('end', function() {
                resolve(myObj);
            });

            readStream.pipe(parseStream);

        });

    }

    let dataAnalyze = await getParse();

    return dataAnalyze;

}