JSON 工具箱

在线工具支持多大的 JSON 文件

结论:没有统一上限,真正卡住你的是浏览器标签页的内存预算:一份 20MB 的 JSON 解析后通常膨胀到 60–100MB,再叠加渲染节点,几百 MB 就崩了。

入门约 3 分钟发布于 2026-10-30更新于 2026-10-30
浏览器处理大 JSON 的内存限制与替代方案

结论:没有统一上限,先按内存估算——解析后的对象通常是原文本的 3–5 倍,还会叠加高亮 DOM;超过 50MB 或顶层记录数几十万时,改用分片查看、流式解析或本地客户端,别在浏览器标签页里硬扛。

内存怎么被吃掉的

一份 20MB 的 JSON 文本进入页面后,会同时存在三份:

  1. 原始字符串:20MB
  2. 解析后的对象树:通常 60–100MB(字符串重复存储、对象头开销、哈希表)
  3. 格式化后的高亮 DOM:每个 token 一个节点,容易再翻一倍

这还没算编辑器缓冲区、撤销栈、语法高亮的中间结果。所以「20MB 文件」在内存里可能是 200MB 以上。

实测经验值

文件大小 桌面浏览器 移动端
< 5MB 流畅 流畅
5–20MB 略有卡顿,格式化需 1–3 秒 明显卡顿,可能无响应
20–50MB 可用但吃力,建议关闭高亮 大概率崩溃
> 50MB 不推荐 不可用

数值会随设备、浏览器版本、是否开启语法高亮浮动,用来看量级而不是当硬指标。

为什么不是「加内存就行」

浏览器给单个标签页的内存有上限(Chrome 桌面约 4GB,但实际远早于这个值就因 GC 压力变慢),而且超限是直接崩溃(Aw, Snap),不会给你优雅降级的机会。手机上更严格,通常几百 MB 就触发回收。

大文件怎么办

方案一:分片查看。 只取前 N 条记录格式化。命令行最快:

head -c 1048576 big.json | jq .        # 只看前 1MB
jq '.items[0:100]' big.json            # 只看前 100 条

方案二:流式解析。 用 stream-json、ijson(Python)、jq --stream 逐条处理,内存占用与文件大小无关。

方案三:本地客户端。 桌面应用不受标签页限制,能利用全部内存:桌面端下载。

方案四:换格式。 如果是日志、事件流,本来就不该用单个大 JSON,改 NDJSON 一行一条,天然可流式处理(见 JSON Lines 与 NDJSON)。

方案五:让后端裁剪。 前端只需要三个字段时,接口就该只返回三个字段。很多「大文件」问题本质是接口设计问题。

判断自己的文件属于哪一档

ls -lh data.json          # 看体积
jq 'length' data.json     # 看顶层是数组还是对象、有多少条

如果 length 是几十万,那不管多大都该考虑分页或流式,而不是想办法在前端硬扛。

常见问题

如何判断自己的文件属于哪一档?

先用 ls -lh 看体积、用 jq 'length' 看顶层记录数。几 MB 以内任何设备都流畅,20–50MB 在桌面浏览器还能处理但会明显卡顿,超过 50MB 就该改用流式解析或命令行工具。

文件超过 50MB 应该怎么处理?

优先分片查看或流式解析,用 head -c 配合 jq、stream-json 或 jq --stream 逐条处理,内存占用与文件大小无关。数据必须整体查看时改用桌面客户端,不受浏览器标签页内存限制。如果文件本身是日志或事件流,改 NDJSON 更合适。

相关工具

延伸阅读