Tec*_*ain 4 javascript json node.js npm
I have JSON file which has json data of size 914MB. I loading the file with fs-extra and parsing it. But when i parse it get error as
cannot create a string longer than 0x1fffffe8 characters
Below is code
const fs = require('fs-extra');
const rawdata = fs.readFileSync('src/raw.json');
const data = JSON.parse(rawdata);
Run Code Online (Sandbox Code Playgroud)
I am running the project with npm and to run i have below command in package.json.
"scripts": {
"start:dev": "cross-env NODE_OPTIONS='--max-old-space-size=4096' ts-node -r tsconfig-paths/register ./src --env=development",
}
Run Code Online (Sandbox Code Playgroud)
0x1fffffe8 正好是 512MB。许多评论者是正确的:您遇到了系统限制。我同意@Pointy 的观点,它很可能是 Node 字符串长度限制。fs-extra与极限无关
在任何情况下,您都必须分块处理该 JSON。
几乎可以肯定,您的海量 JSON 数据是根级别的数组。因此,如果您使用流/SAX 解析器,您可以单独或批量处理该根数组中的每个元素,以任何有意义的方式处理。
?? 你不想要一个只支持JSON Streaming 协议的流解析器,因为该协议是为在一个流中连接的多个 JSON 对象的流而设计的。但据我所知,你有一个庞大的整体 JSON 对象,很可能是我上面提到的根数组。
您有许多解析器选项。为了帮助您入门,以下是 NPM 上使用率最高的那些:
如果您知道源 JSON 的格式非常规则,例如根数组中的每条记录都是 N 行长,那么最有效的方法可能是通过缓冲读取器读取原始行,抓取每 N 行(针对开头进行调整)顶部根数组的行),以及JSON.parse单独的(删除分隔根数组条目的逗号之后。只是一个原始想法。我从来没有做过!
| 归档时间: |
|
| 查看次数: |
1128 次 |
| 最近记录: |