JSON 格式化与校验
JSON格式化、校验与压缩 JSON。精确的错误行列定位,并带语法高亮。
不获取远程 URL;请直接粘贴你的 JSON。
本页内容
什么是 JSON 格式化?#
JSON 在传输时往往被压成一行——接口日志、打包工具的输出、CDN 上的配置,几乎都是没有缩进的密集字符串。JSON 格式化工具做的事,就是把这一团字符重新排版成有层级、有缩进、能一眼看清结构的文本。听起来简单,但调试接口、对配置文件挑错、比对两次返回值哪里不同时,格式化往往是第一步。
本页把三件事合并到一起:美化(按缩进重新换行)、校验(告诉你这段文本到底合不合法)、压缩(去掉所有空白,输出最小体积)。校验失败时,状态栏不会只甩给你一个”解析错误”,而是给出准确的行号和列号——这一个细节,往往就是五秒钟修好和二十分钟干瞪眼的区别。
怎么使用#
- 把 JSON 粘进左侧的 输入框。如果只是想看看效果,点工具栏的 示例 会加载一段小样本。
- 在 缩进 下拉里选一种风格:2 空格、4 空格、Tab。2 空格是目前最常见的约定;Tab 适合接下来要粘进已有 Tab 配置的编辑器。
- 选接下来做什么:
- 格式化 —— 按所选缩进美化。
- 压缩 —— 拼成一行,去掉所有空格。准备贴进请求体之前常用。
- 校验 —— 只检查语法,不改原文;当你只想得到”合法 / 不合法”的结论时用它。
- 勾上 键名排序,对象里的字段会按字母序输出。这个选项在对拍两次接口返回时格外有用:键名一排序,剩下的差异就只剩真正有意义的那些。
- 勾上 尾逗号,会输出一种更宽松、更适合人读的写法(最后一项后面也带逗号)。注意严格的解析器会拒绝这种写法——只在本机阅读时再开。
- 右侧 输出框 看结果。下方的状态栏会显示
Valid JSON或精确的错误位置(行:列 — 信息)。点 复制 取走结果。
主要特性#
- 原生严格解析。 直接用浏览器自带的
JSON实现做解析,通过校验的就等于运行时通过,没有自定义方言,没有意外。 - 精确的错误定位。 多了一个尾逗号、键名漏了引号、括号没闭合——每一条都会指出具体行号和列号,而不是含糊的 “parse error”。
- 三种缩进风格。 2 空格、4 空格、Tab。
- 可选的键名排序和尾逗号。 每次任务独立勾选,不用重新粘贴。
- 完全在浏览器内运行。 粘进来的文本由本页在你的浏览器里处理,不会上传——本站根本没有后端可以接收。
- 实时字符计数。 两栏都显示各自体积,压缩 payload 时很方便。
实例演示#
假设一个配置接口返回下面这段压缩 JSON,你需要找出拼写不对的字段名:
输入(压缩成一行):
{"server":"api.example.com","port":443,"retry":{"count":3,"backoffMs":[100,400,1600]},"tags":["prod","primary"]}
缩进选 2 空格、勾上 键名排序,点 格式化:
{
"port": 443,
"retry": {
"backoffMs": [
100,
400,
1600
],
"count": 3
},
"server": "api.example.com",
"tags": [
"prod",
"primary"
]
}
键名排过序之后,backoffMs 紧挨着 count,那组原本被压在一行里看不出来的退避序列(100、400、1600,每次翻 4 倍)一下就显出来了。注意 tags 仍然是 ["prod","primary"]——键名排序只重排对象的字段名,绝不碰数组元素,你放进去什么顺序,出来还是什么顺序。
常见问题#
这个工具会把我的数据上传吗?#
不会。解析完全由浏览器内置的 JSON 接口在本页内完成。既没有服务器接收,也没有任何网络请求——你的输入从头到尾没离开过本机。
状态栏提示不合法,但我看起来没问题,怎么办?#
看状态栏给的行号和列号。最常见的四类问题是:闭合括号前多了一个逗号、字符串用了单引号(JSON 只认双引号)、对象键名没加引号、以及从别处粘贴进来的 Tab 或控制字符。列号会直接指到出错的位置。
“键名排序” 具体是怎么排的?#
把每个对象里的字段按字母序(ASCII 序,区分大小写)重新输出。数组顺序不动——数组的位置是有语义的,键名排序绝不会动数组元素。
能处理很大的文件吗?#
可以,上限取决于浏览器内存。几兆以上的文件格式化时会有一点点卡顿,状态栏有字符计数方便你判断体积。本页不做流式处理,所以几百兆的超大输入会让标签页吃紧。