JSON 工具箱

JSON 文件是什么、用什么打开、怎么改

结论:从「双击变成记事本乱码」讲到编辑器、浏览器、在线工具三条打开路径,再说明改完之后怎么确认没改坏,以及大文件打不开时的替代方案。

入门约 9 分钟发布于 2026-10-30更新于 2026-10-30
JSON 文件入门封面

结论:打开 JSON 文件前先确认编码与 BOM,再检查结构是否只有对象或数组;改完之后一定用解析器校验一次,不要靠肉眼确认括号和逗号。

它就是一个后缀为 .json 的纯文本文件,用记事本也能打开。真正让人头疼的不是「打不开」,而是打开之后看不出来哪里改坏了。

一、JSON 文件里到底装了什么

一个合法的 JSON 文件,内容只有两种可能:一个对象 {...},或者一个数组 [...]。除此之外什么都不允许——不能有变量声明、不能有注释、不能有函数。

{
  "name": "订单服务",
  "port": 8080,
  "debug": false,
  "upstream": ["10.0.0.11", "10.0.0.12"],
  "timeout": null
}

从结构上认三件事就够了:

你看到的 含义 对应编程概念
{ } 包起来的键值对 对象,键必须是双引号字符串 Map / 结构体
[ ] 包起来的一串值 数组,元素类型可以不同 列表
六个值类型 字符串、数字、布尔、null、对象、数组 就这六种,没有日期和整数

文件扩展名不决定内容,package.json、tsconfig.json、composer.json 都是同一种东西,只是被不同工具约定读不同的键。

二、三条打开路径,按场景选

看一眼就走:用浏览器打开。把文件拖进 Chrome 或 Edge 窗口即可,浏览器会原样显示;装了 JSON Viewer 类插件的话会自动排版加折叠。

要改内容:用编辑器。VS Code、Sublime、Notepad++ 都自带 JSON 语法高亮和括号匹配,VS Code 里 Shift + Alt + F 就是格式化。注意 Windows 记事本保存时可能加 BOM 头,改了配置反而不生效,建议避开。

不想装东西、只想验证:用 在线 JSON 格式化。粘贴进去立刻能看到行列号、错误位置、折叠树,改完直接复制走。数据在浏览器本地处理,不上传服务器。

大文件(几十 MB 以上):不要用编辑器硬开。VS Code 打开 100 MB 的 JSON 会卡到怀疑人生,改用命令行先看结构:

# 看前 20 行,确认是不是数组
head -n 20 data.json

# 用 jq 看顶层键名,不加载全文
jq -r 'keys[]' data.json | head

# 统计数组长度
jq 'length' data.json

三、双击打开是乱码怎么办

三种原因,处理方式不同:

  1. 其实是二进制文件(比如 .json 后缀的压缩包、导出的数据库文件)。用 file data.json 看真实类型,别硬当文本处理。
  2. 编码不是 UTF-8。GBK 编码的中文在 UTF-8 环境里就是乱码。用编辑器的「通过编码重新打开」选 GBK 试一次,能正常显示就另存为 UTF-8。
  3. 文件被加密或压缩过。现象是开头出现 PK(zip)或一堆问号,这种要先解压/解密。

四、改完之后怎么确认没改坏

JSON 的容错是零:少一个逗号、多一个逗号、少一个引号,整份文件就废了,而且报错位置经常指向下一行。所以改完必须校验,别靠肉眼。

改动的三个高危动作,按踩坑频率排序:

动作 常见后果 规避方式
复制粘贴一段配置进来 带进尾逗号或全角标点 粘贴后立即格式化一次
手动调换键的顺序 多出或少掉逗号 用编辑器的行移动,别手打
删除数组最后一个元素 留下 ,] 删完看括号是否成对

校验方式很简单:粘进 在线校验 看是否有红字,或者命令行跑一句:

python3 -m json.tool config.json > /dev/null && echo OK

有输出 OK 就是合法。想连字段类型一起校验(比如 port 必须是数字、name 不能为空),写一份 JSON Schema 比人眼可靠得多。

五、.json 与几个近亲的区别

后缀 差别 能不能被标准解析器读
.json 标准 JSON 能
.jsonc 允许 // 与 /* */ 注释 不能,要先去掉注释
.json5 允许注释、单引号、不加引号的键、尾逗号 不能,需要 JSON5 解析器
.jsonl / .ndjson 每行一个独立 JSON,整体不是合法 JSON 不能整体解析,要按行读

看到 tsconfig.json 里带注释不要奇怪,它实际按 .jsonc 处理;把同样内容丢进 JSON.parse 就会报错。需要互转时用 JSON5 转 JSON 一键清掉注释和尾逗号。

六、什么时候该换存储格式

JSON 适合「结构不固定、人要看、跨语言传」的场景。如果文件超过几十 MB、字段结构稳定、需要按条件查询,继续用 JSON 就是在给自己找麻烦——换成 SQLite、Parquet 或直接入库,读写性能差着数量级,具体取舍见 大 JSON 的解析与流式处理。

常见问题

大 JSON 文件打不开时应该怎么查看?

不要在编辑器里硬开,VS Code 打开 100 MB 的 JSON 会卡到不可用。改用命令行先看结构:head -n 20 确认是不是数组,jq -r 'keys[]' 只看顶层键名,jq 'length' 统计数组长度。这些命令都不需要加载全文。

为什么记事本改完 JSON 后配置不生效?

Windows 记事本保存时可能加 BOM 头,带 BOM 的文件会让配置解析失败,所以改了内容也不生效。原文的建议是改用 VS Code、Sublime、Notepad++ 这类编辑器,它们自带语法高亮和括号匹配。若已经用了记事本,另存为「UTF-8 无 BOM」再试。

是否可以把 JSON 文件当成 JSON5 直接加注释?

不可以,标准解析器读 .json 时代码里不允许注释,JSON.parse 会直接报错。注释要写在 .jsonc 或 .json5 文件里,并用对应的解析器读取。tsconfig.json 这类文件实际按 .jsonc 处理,把同样内容丢进 JSON.parse 就会失败。