首页 > 解决方案 > 使用 600 MB 及以上的大型 JSON 文件处理 Node js 的有效方法是什么?

问题描述

使用 600 MB 及以上的大型 JSON 文件处理 Node js 的有效方法是什么?

我的伙伴从他的 REST API 中给了我非常大的 JSON 文件。600mb、1000mb

其结构如下

{ nameid1:[list id,....], nameid2:[list id,....], }

[list id,....] - 一个有ID的数组最多可以有上亿条记录。

现在要使用这些文件,我使用以下操作序列。

  1. 我把它保存到硬盘

  2. 使用 sed 命令,从单行文件中,我将其设为多行

例子

exec (`sed -i 's /', '/', '\n/g' file.json)

  1. 我使用 readline 直接处理文件

我尝试使用 JSONStream 但它导致 FATAL ERROR: CALL_AND_RETRY_LAST 分配失败 - JavaScript heap out of memory

function getStream() {
    let jsonData = __dirname + '/jsonlarge/file.json',

    stream = fs.createReadStream(jsonData, {
        encoding: 'utf8'
    })

    parser = JSONStream.parse('*');
    stream.pipe(parser)
    parser.on('data', (data) => {
        console.log('received:', data);
    });
}

示例结构 json 文件

{"Work":"12122001","name":"Regist","world":[{"name":"000000","point":"rfg","Content":["3202b9a3fba","121323","2343454","45345543","354534534"]}, {"name":"000000","point":"rfg","Content":["3202b","121323","2343454","45345543","354534534"]}, {"name":"000000","point":"rfg","Content":["320","121323","2343454","45345543","354534534"]}]}

也许有人知道使用此类文件的更快方法。

谢谢

标签: node.jsjson

解决方案


推荐阅读