JSON 格式化工具怎么用
- 把 JSON——接口返回的数据、配置文件、一条日志——粘贴到输入框。粘贴后立刻校验并格式化。
- 选格式化得到用 2 个空格、4 个空格或制表符缩进的易读格式;选压缩(一行)则去掉值与值之间所有的空格和换行。
- 勾选排序键名,每个对象的属性都会按字母顺序排列,方便对比同一份数据的两个版本。数组的顺序不变。
- 点击结果旁的复制。如果 JSON 不合法,会显示问题、行号和列号,并在出错的那一行下面用 ^ 标出位置。
格式化、压缩、校验分别做什么
格式化(也叫美化、pretty print)把每个属性和数组元素放到单独一行,并按嵌套层级缩进;压缩正好相反,输出最紧凑的形式。两者都不改变数据本身。校验则按 JSON 标准 RFC 8259(与 ECMA-404 的语法相同)检查文本:键名和字符串用双引号、不能有尾随逗号、不能有注释、true、false、null 必须小写、数字不能有前导零,也不能是 NaN 或 Infinity。工具会报告找到的第一个错误。
很多在线格式化网站先用 JavaScript 的 JSON.parse 解析再重新输出。本工具自己逐字读取文本,所有值都按原样保留:
- 大数字不会被四舍五入。JavaScript 只能精确表示到 9,007,199,254,740,991(253 − 1)的整数。经过
JSON.parse,订单号 12345678901234567890 会变成 12345678901234567000,后端用 Long 类型的雪花 ID 也常被这样改坏。在这里它保持原样,168.00、1E+2 这样的写法也不变。 - 键的顺序不变。JavaScript 对象会把看起来像整数的键(如“1”“2”)排到最前面,所以
JSON.parse会打乱顺序;在这里只有勾选排序时顺序才会改变。 - 字符串逐字复制,包括
\u4e2d、\/这样的转义,也不会把中文转成 \u 编码。 - 统计重复的键。RFC 8259 要求同一对象内的键名应当唯一,因为不同程序对“哪个值生效”的处理并不一致。
中文输入法造成的全角符号错误
开着中文输入法打符号时,JSON 需要的半角符号会变成全角,看起来几乎一样,却会导致解析失败。本工具对这些情况的提示和改法如下:
| 输入的字符 | 显示的错误 | 改法 |
|---|---|---|
全角冒号“:” {"name":1} | 缺少冒号 | 改成半角 : |
全角逗号“,”、顿号“、” [1,2] | 缺少逗号 | 改成半角 , |
中文引号 “ ” {“name”: 1} | 中文引号或弯引号 | 改成半角 " |
| 全角双引号“"”或直角引号「」 | 意外的字符 | 改成半角 " |
| 全角空格 | 不可见字符 | 删掉或改成半角空格 |
字符串的内容(比如 "张伟"、"上海市浦东新区")可以照常使用中文和全角字符;必须是半角的只有 JSON 的结构符号 { } [ ] : , " 以及字符串外面的空白。按 Shift 切换到英文状态再打这些符号,就能避免大多数问题。
其他常见错误及修改方法
| 错误 | 错误写法 | 正确写法 |
|---|---|---|
| 末尾多了逗号 | {"a": 1, "b": 2,} | {"a": 1, "b": 2} |
| 单引号 | {'name': '张伟'} | {"name": "张伟"} |
| 键名没有引号 | {name: "张伟"} | {"name": "张伟"} |
| 注释 | {"port": 80 // web} | {"port": 80} |
| Python 或 JavaScript 的值 | {"x": None, "y": True, "z": undefined} | {"x": null, "y": true, "z": null} |
| 前导零(如编号) | {"code": 010020} | {"code": "010020"} |
| 单个反斜杠 | {"path": "C:\Users"} | {"path": "C:\\Users"} |
| 几个值连在一起 | {"a": 1} {"b": 2} | [{"a": 1}, {"b": 2}] |
缺少右括号时,解析器要读到最后才会发现,所以“JSON 意外结束”指向最后一行,而真正漏掉的 } 或 ] 在更前面。先格式化前面合法的部分,看缩进从哪里开始不对,是最快的定位办法。
计算示例:缩进会让 JSON 变大多少
输入框里的示例是一条网店订单的单行接口返回,共 335 字节,有 18 个键,嵌套 4 层。UTF-8 编码下每个汉字占 3 字节,英文字母和数字占 1 字节。格式化后变成 27 行,大小如下:
| 输出 | 大小 |
|---|---|
| 压缩(一行) | 335 字节 |
| 制表符 | 451 字节 |
| 2 个空格 | 523 字节 |
| 4 个空格 | 667 字节 |
制表符每层只占 1 字节,所以是格式化结果里最小的。需要人阅读和编辑的文件,可读性通常值得多出的那些字节;大批量传输或存储的 JSON 则适合压缩。
限制与小技巧
- 大文件:1 MB 的 JSON 在普通笔记本电脑上约一秒就能校验并格式化完,长结果也能流畅滚动。几十 MB 的文件更适合用 jq 等命令行工具。
- JSON Lines(NDJSON)文件每行一个 JSON 值,整体并不是一个 JSON 文档。请一次粘贴一行,或者用
[ ]把所有行括起来、行与行之间加逗号。 - JSON5 和“带注释的 JSON”是一些配置文件使用的格式,允许注释和尾随逗号。标准 JSON 不允许,所以在这里会报错。
- 一次只显示第一个错误。改好之后,如果还有错误,会马上显示下一个。
- 想统计字符串有多少个字、占多少字节,可以用字数统计;想把数字转成二进制,可以用二进制转换器。
JSON 不会离开你的设备
格式化和校验都在浏览器里完成。JSON 里常常有 API 密钥、令牌或客户信息,这些内容都不会被上传或记录,也不会被保存:刷新页面就会清空。
常见问题
我的 JSON 会被上传到服务器吗?
不会。页面在你的浏览器里用 JavaScript 完成格式化和校验,所以可以放心处理内部数据;页面加载后断网也能用。
为什么在 JavaScript 里能用,JSON 校验却报错?
JavaScript 的对象字面量允许很多 JSON 不允许的写法:键名不加引号、单引号、尾随逗号、注释、undefined 和函数。JSON 是更严格的数据格式,这样每种编程语言都能用同样的方式读取它。
“JSON 意外结束”是什么意思?
文本结束时还有东西没有闭合——通常是漏了 } 或 ],或者某个字符串缺少结尾的引号。复制时内容被截断也会出现这个错误。
看起来没问题,为什么还报错?
很可能混进了全角符号。开着中文输入法打出的冒号“:”、逗号“,”、引号“ ”和全角空格,肉眼很难和半角区分。按提示的列号找到 ^ 标记处的字符,切换到英文状态重新输入即可。
排序键名会改变数据吗?
不会。RFC 8259 把对象定义为“无序的名称/值对集合”,键的顺序没有意义。数组是有序的,所以数组里的元素永远不会被排序。
怎样把 JSON 压缩成一行?
在输出里选压缩(一行),就会去掉所有换行和缩进。字符串内部的空格和 \n 属于数据本身,会原样保留。
最后更新:2026年10月16日