JSON 格式化/校验
JSON 格式化,是把挤成一行或缩进混乱的 JSON 排版成带缩进的可读结构,同时校验它是不是合法 JSON。粘贴文本或拖入 .json 文件,就能在浏览器本地美化(2/4 空格或制表符缩进,可按 key 递归排序)、压缩成单行、转义成能贴进代码的字符串或反转义还原。语法有错会指到第几行第几列;数字按原始字面量输出,雪花 ID、身份证号不会被悄悄改写,只给一条精度提示。内容不上传,免费不注册。
🔒 JSON 在你的浏览器内处理,未上传任何服务器。
如何使用JSON 格式化/校验
把 .json 或 .txt 文件拖进上方虚线框,或直接把 JSON 文本粘进下面的输入框。读文件、解析、输出全部在浏览器本地完成,内容不上传。
选模式:「美化」可挑 2 空格、4 空格或制表符缩进,并勾选「按 key 排序」(对所有嵌套层级生效);「压缩」去掉全部空白输出单行;「转义」「反转义」用来处理要贴进代码里的字符串。
点按钮看结果:合法就输出格式化后的内容并显示字符数,可「复制」或「下载」成 formatted.json;不合法会红字提示「第 X 行第 Y 列」和原因,按位置回去改再点一次。
关于JSON 格式化/校验的常见问题
- JSON 格式化会上传我粘贴的数据吗
- 不会。解析、美化、压缩、转义全部由浏览器里的 JavaScript 在你的设备上完成,页面不会把内容发往任何服务器,也不写入本地存储,关闭或刷新页面即清除。想自己验证:按 F12 打开开发者工具的「网络」面板,再点一次「美化」,整个过程不会出现请求。所以带 token、密钥或客户信息的接口返回体,也可以直接贴进来看结构。
- JSON 校验报错怎么定位到第几行第几列
- 点「美化」或「压缩」时若 JSON 非法,输入框下方会红字提示「JSON 语法错误:第 X 行第 Y 列 — 原因」,行列就是定位依据,后半段原因由浏览器自带的 JSON 引擎给出,多为英文。有一点容易踩坑:列号指向解析器「读不下去」的位置,真正要改的字符常常在它前面——少写一个逗号,报错往往落在下一个属性名上。个别错误在旧浏览器里拿不到位置信息,会退回第 1 行第 1 列,这时照着提示里的原因去找对应符号。
- JSON 格式化后大整数会不会丢精度
- 在本工具的输出里不会。美化和压缩用的是保留原始字面量的解析器,数字原文照搬:9007199254740993 输出还是 9007199254740993,1.0、-0.50、1e3 也不会被改写成 1、-0.5、1000。检测到超出 JavaScript 安全整数范围(2^53−1)的数字时,页面会给一条黄色提示——因为这份 JSON 一旦被 JS 的 JSON.parse 读进程序,末位照样会变。要真正保住,源头就该把雪花 ID、身份证号写成字符串。
- JSON 压缩成一行能省多少体积
- 省掉的是缩进、换行和冒号后的空格,占比取决于层级深浅。举个能自己复现的例子:{"a":1,"b":[2,3]} 按 2 空格缩进美化后是 7 行、39 个字符,压回单行只有 17 个字符,少了一半多。层级越深、每层键越少,缩进占的比重越大。切到「压缩」模式点一次即可,结果区会直接显示字符数,适合塞进配置项、环境变量或请求体里。
- JSON 按 key 排序是只排最外层吗
- 所有层级都排,嵌套对象内部也会跟着排;数组元素的顺序不动,因为数组本身是有序的。排序按解码后 key 的 Unicode 码元顺序,既不是拼音也不是数字大小:{"b":1,"A":2,"a":3,"中":4,"10":5,"2":6} 排完的顺序是 10、2、A、a、b、中——"10" 排在 "2" 前面是逐字符比较的结果,大写字母也排在小写前面。最实用的场景是把两份结构相同的配置各排一遍,再丢进文本对比,差异一眼就出来。
- JSON 格式化中文会变成 \u 编码吗
- 不会。字符串按原文照搬,中文和 emoji 都保持可读,不会被转成 \u4e2d\u6587 这类形式。反过来也一样:原文里本来就写成 \u4e2d\u6587 的字符串不会被解码成「中文」,格式化只调排版、不改写字符串内容。需要把 \u 还原成中文时,用「反转义」模式处理;至于反向的「中文转 \u」,本工具不做——「转义」只处理引号、换行这类字符,不动中文。
- JSON 转义和反转义分别什么时候用
- 「转义」把整段文本变成能直接贴进代码字符串的形式:双引号变成 \", 换行变成 \n,输出不带外层引号,适合塞进 Java、Go 的字符串常量或某些平台的单行配置。「反转义」是反向操作:从日志、抓包里拷出来的 {\"a\":1} 这种一坨转义文本,粘进来点「反转义」就还原成正常 JSON,再切「美化」即可看结构。两种模式可以无损往返,首尾空格不会被吃掉,粘进来的文本带不带外层双引号都能识别。
- JSON 格式化支持注释和尾逗号吗
- 不支持,按标准 JSON 严格校验,注释、尾逗号、单引号、不加引号的 key、NaN 都会判为语法错误。常见对应关系:{"a":1,} 提示第 1 行第 8 列「Expected double-quoted property name」;{a:1} 和 {'a':1} 都提示第 1 行第 2 列;写了 // 注释则提示属性值后缺少逗号或右括号。手上是 JSON5 或带注释的 JSONC(比如 tsconfig.json)时,先把注释和尾逗号删掉再来校验。
- JSON 里有重复的 key 格式化后会丢吗
- 不会丢,两条都原样留着。{"a":1,"a":2} 美化后仍然是两个 "a",这点和多数在线格式化工具不同——它们内部走 JSON.parse 再输出,只会剩下最后一个。保留的好处是你能看见重复、自己决定删哪个。要留意的是:重复 key 的 JSON 虽然合法,但下游程序解析时基本都只取最后一个值,配置里冒出重复键往往就是 bug,看到了尽早改掉。
- 手机上怎么把一行 JSON 格式化看结构
- 用手机浏览器(iOS Safari、安卓 Chrome、微信内置浏览器都行)打开本页,长按把 JSON 粘进输入框,点「美化」即可,处理同样在手机本地完成,不用装 App。微信里收到的 .json 文件要先「用其他应用打开 - 保存到文件」,再回本页从文件里选。屏幕窄的时候结果区可以左右滑动看长行,缩进选 2 空格比 4 空格省一半横向空间。
- JSON 格式化能处理多大的文件
- 没有写死的大小上限,但整份内容要读进内存并在页面里渲染出来,实际跑得动多大取决于设备。几百 KB 的接口返回体基本是瞬间完成;到了几 MB,输入框和结果区的渲染会明显变卡,手机更早遇到瓶颈。日志那种几十 MB 的大文件,建议在本机用 jq 或 python -m json.tool 处理,或者先截一段有代表性的内容贴过来看结构。
JSON 格式化为什么不改写大数字和小数尾 0
一句话:这里的美化和压缩只重排空白,数字和字符串的原始写法一个字符都不动。常见做法是 JSON.parse 之后再 JSON.stringify 输出,数字要先过一遍 JavaScript 的双精度浮点数,超范围的整数、写法特殊的小数就被顺手改掉了。
| 输入的 JSON 片段 | parse 后重新输出(多数工具) | 本工具的输出 |
|---|---|---|
| 9007199254740993 | 9007199254740992(末位被改) | 9007199254740993(原样) |
| 123456789012345678901 | 123456789012345680000 | 123456789012345678901(原样) |
| 1e9999 | null(溢出成 Infinity 后写成 null) | 1e9999(原样,并给精度提示) |
| 1.0 | 1 | 1.0(原样) |
| -0.50 | -0.5 | -0.50(原样) |
| "9007199254740993" | 原样(字符串不受影响) | 原样,且不触发大数字提示 |
JSON 校验常见语法错误对照表
绝大多数「JSON 校验不通过」都落在五种写法上:尾逗号、key 没加双引号、用了单引号、混进注释、两段 JSON 粘在一起。下面是每种写法实际会看到的提示和改法。
| 错误写法 | 页面提示(Chrome 下) | 怎么改 |
|---|---|---|
| {"a":1,} | 第 1 行第 8 列 Expected double-quoted property name | 删掉最后一个逗号,标准 JSON 不认尾逗号 |
| {a:1} | 第 1 行第 2 列 Expected property name or '}' | key 要加双引号:{"a":1} |
| {'a':1} | 第 1 行第 2 列 Expected property name or '}' | 单引号全部换成双引号 |
| {"a":1 // 备注 } | 第 1 行第 8 列 Expected ',' or '}' after property value | 删掉注释,JSON 不支持 // 和 /* */ |
| {"a":[]} {"b":1} | 第 2 行第 1 列 Unexpected non-whitespace character after JSON | 两段 JSON 粘在一起了,JSON Lines 要一行一行分开校验 |
长 JSON 报错定位不到时有个笨办法很管用:把内容对半砍,先校验前一半,通过就砍后一半,几次二分就能圈出问题段落—— 比从头一行行读快得多。校验通过之后再点一次「美化」,缩进对齐了,缺括号、层级串位这类结构问题也会自己浮出来。
相关工具:想把这份 JSON 变成表格,用 JSON 转 CSV 或 JSON 转 Excel;配置文件要在两种格式间来回改,用 JSON 转 YAML;两份 JSON 想按字段看差异,用 JSON 对比(键顺序不同不误报,能忽略 updatedAt 这类噪声字段),只想看文本层面的行级改动再用 文本对比;接口返回的 JSON 要在前端写成接口定义,用 JSON 转 TypeScript(嵌套对象自动拆成具名接口,只在部分元素出现的字段标成可选);手上是 XML 而不是 JSON,用 XML 格式化(同样是先校验良构再排版,注释、CDATA 与混合内容原样保留);手上是 k8s 清单、docker-compose 这类 YAML 配置,用 YAML 校验格式化(一次列出全部报错行列,注释与锚点原样保留)。
相关教程
- 文件知识CSV、JSON、XML、YAML 区别:数据格式怎么选CSV、JSON、XML、YAML 四种常见数据格式的结构、可读性、体积、常见用途与转换建议,帮你判断表格、接口、配置文件该用哪一种。
- 操作教程JSON 转 CSV 怎么操作?含嵌套 JSON 扁平化教程把 JSON 数据转成 CSV 表格的完整步骤,讲清数组与嵌套对象怎么扁平化、转出来用 Excel 打开不乱码,以及和 CSV 转 JSON 的区别。
- 问题解答JSON 格式错误怎么排查?常见语法错误与修复方法JSON 解析失败的排查方法:报错行列为什么常常指偏、尾逗号与单引号等五类高频语法错误的修法、JSON 与 JavaScript 语法的差别,以及大整数精度丢失、重复键这类不报错但结果已经错了的问题。