教程 · 调试

大 JSON 怎么读才不卡

几 KB 的响应怎么贴都行。到了几 MB,卡的往往不是「解析数学」,而是浏览器要画几千个 DOM 节点,剪贴板也有大小限制。HiJSON 能扛一部分,但用法要改。

卡在哪一步

  • 粘贴:系统剪贴板和 textarea 对超大文本不友好,有的环境直接截断,解析结果「少了半截」,看起来像语法错误。
  • parse:几兆的纯文本 parse 通常还能做。真正慢的是紧接着建树。
  • 全展开:每个键一个节点,一万个 SKU 就会把页面拖死。

所以策略是:文件导入、少展开、用路径提问,而不是「全部打开看看」。

用文件,不要用复制

把接口导出或日志存成 .json / .jsonl,拖到 HiJSON。绕过剪贴板截断。JSONL 按行存的日志见 JSON Lines

超过大约 5MB,解析和首屏树都会明显变慢。这时先问自己:我是要看全貌,还是只要 errors 或某个 id?后者在本机切一刀再导入更合适。

先问路径,再展开分支

搜索框用 $ 开头,只取你要的:

$.data.items[0]
$.data.items[*].id
$..error_code

递归 $.. 在超深、超宽的文档上也会慢,尽量带上已知前缀,比如 $.payload..error_code。语法说明在 JSONPath 入门

列表核对用 $.data.items[*].{id,status},不要为了「看一眼状态」展开 2000 个对象。树怎么读见 树视图

大纲当目录,不要当阅读器

中间大纲用来跳到 datametaerrors。跳过去再展开那一枝。把大纲理解成 IDE 的文件树,而不是把整个仓库展开。

本机 jq:浏览器的前一步

已经确定只要一部分时:

jq '.data.items[:20]' dump.json > slice.json
jq '{count: (.data.items|length), sample: .data.items[0]}' dump.json

slice.json 再拖进 HiJSON。结构、类型、空值这些事,小样本就够判断。全量统计(一共多少条、有多少失败)留给 jq 或数据库,别交给网页。

内存和隐私

大文件会占标签页内存。用完关掉,或刷新。生产导出里常有用户字段,默认不离开浏览器;一旦点分享,数据会去 JSONBin,大文件既慢也不合适。原则见 安全注意隐私政策

什么算「太大,别用网页」

没有硬门槛。经验上:

  • 几百 KB:随意。
  • 一两 MB:文件导入,少全展开。
  • 十几 MB 以上:先切,或只用命令行。网页当「看样本」的放大镜。

流式、按行的上百 MB 日志,用日志平台或 jq 流式过滤。把整个文件塞进单页应用没有意义。

常见问题

解析成功但页面假死?
多半是展开过多。刷新,只开大纲,用路径取子集。
文件只有 2MB,粘贴却缺字段?
按截断查:文件导入对比。若导入完整、粘贴缺,就是剪贴板或输入框限制。

相关教程

拖文件进来,少展开

用路径提问,比全展开整棵树更合适。

打开 HiJSON →