三步走完:先看红字,再格式化
把 JSON 粘进输入框,不用点任何按钮 —— 输入停顿约 120 毫秒就自动校验一遍,有语法错误立刻报出行列位置。
确认无误后选缩进:2 空格、4 空格或 Tab,选完点「格式化」;想要最小体积就点「压缩」,结果上方会给出原始字符数、压缩后字符数和省出的百分比。
结果可以整段复制,也能下载成 data.json。同一份数据还有「转义 / 反转义」,用来把 JSON 字符串再塞进别的代码里。
报错为什么精确到行列,却又看不到原文
浏览器原生的 JSON.parse 报错会顺带把你粘贴的原文片段回显在错误信息里。如果这段 JSON 里有 token、手机号或者密钥,等于自己给自己截屏泄露一次。
所以这里在原生报错之后,额外跑一遍自己写的扫描器重新定位错误位置,再把引擎回显的那段原文从提示里剥掉 —— 你只看到「第几行第几列出问题」,看不到那行内容本身。
定位完成后光标会自动选中出错的那个字符,回到输入框直接改就行;校验失败时上一次的有效结果也会保留,不会因为一次误触把正在看的内容清掉。
压缩到底动了什么
压缩走 JSON.stringify,只去掉缩进、换行和多余空白:不重排键顺序,不改动数值写法。解析出来的对象再序列化,键顺序与原文档一致。
所以「省出百分比」是纯空白的收益 —— 层级越深、缩进越宽省得越多;本来就是一行的紧凑 JSON,压缩前后体积几乎没差别,这是正常的,不是没生效。
结果区还会给出顶层条目数和数据类型,方便一眼确认粘进来的是对象、数组还是单个值。
接口报文、带密钥的配置也能直接粘
整个页面没有任何网络请求,JSON 从头到尾只在你的浏览器内存里,不写本地存储、不上传服务器。接口返回的报文、含密钥的配置文件都可以直接粘进来格式化。
配套的两个细节也是同一个目的:错误提示不回显原文,失败时保留上一次有效结果。
什么时候该换工具
没有输入大小上限,但几 MB 以上的超长 JSON 在浏览器里格式化会明显卡顿 —— 防抖只能降低触发频率,改变不了单次解析的成本。这个量级建议用命令行 jq 或编辑器的格式化插件。
按条件筛字段、排序、去重也不在本页能力内,那是 JMESPath 之类查询语言的活。本页只做四件事:校验、缩进、压缩、转义与反转义。
常见问题
格式化会打乱我的字段顺序吗?
不会。用的是 JSON.stringify,它保持对象原有的键顺序,只调整空白。想重排顺序得自己在代码里处理。
中文会被转义成 \uXXXX 吗?
不会。中文原样输出,转义只在 JSON 里本来就该转义的字符上生效(引号、反斜杠、控制字符)。
为什么报错不显示出错的那段内容?
刻意设计的。原生报错会回显原文,若 JSON 含 token 或手机号等于二次泄露;本页改用自写扫描器,只报行列位置并自动选中出错字符。
多大规模的 JSON 会卡?
没有硬上限,但几 MB 以上单次解析成本就上来了,浏览器会短暂无响应。这个量级请改用 jq 或编辑器插件。