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

结论:没有统一上限,先按内存估算——解析后的对象通常是原文本的 3–5 倍,还会叠加高亮 DOM;超过 50MB 或顶层记录数几十万时,改用分片查看、流式解析或本地客户端,别在浏览器标签页里硬扛。
内存怎么被吃掉的
一份 20MB 的 JSON 文本进入页面后,会同时存在三份:
- 原始字符串:20MB
- 解析后的对象树:通常 60–100MB(字符串重复存储、对象头开销、哈希表)
- 格式化后的高亮 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 更合适。
相关工具
- JSON 格式化与校验:几 MB 以内最顺手,支持出错行列定位
- 大 JSON 解析很慢怎么优化:性能优化的完整思路