什么是 JSON 格式化?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端数据传输、配置文件、API 接口等场景。原始的 JSON 字符串通常被压缩成一行,难以阅读和调试。
JSON 格式化(Pretty Print)就是将压缩的 JSON 字符串按层级展开,添加缩进和换行,使其结构清晰、易于阅读。本工具同时支持反向压缩,去除所有空白字符以减小体积。
功能说明
- 美化:将 JSON 按 2 个空格缩进格式化,支持语法高亮显示
- 压缩:去除所有换行、空格和缩进,生成最小体积的 JSON 字符串
- 校验:检查 JSON 语法合法性,定位错误位置并给出提示
- 复制:一键复制处理后的结果到剪贴板
如何使用 JSON 格式化工具?
- 在左侧输入框粘贴需要处理的 JSON 字符串
- 点击"美化"按钮,右侧即可看到带缩进和语法高亮的结果
- 如需压缩传输,点击"压缩"按钮生成最小体积 JSON
- 点击"复制结果"一键复制到剪贴板使用
隐私说明
本工具为纯前端实现,您输入的 JSON 数据仅在浏览器本地处理,不会上传到任何服务器。您可以放心粘贴敏感数据。
常见问题
为什么我粘贴带注释或尾逗号的 JSON 会直接报错?
因为 JSON 是严格的标准格式,规范不允许任何注释,也不允许在数组或对象末尾留下多余的逗号。本工具基于 JSON.parse 做严格解析,遇到这两种写法会立即提示错误位置。VS Code 的 tsconfig.json、.prettierrc 等文件之所以能带注释,是因为编辑器按 JSONC/JSON5 这种宽松超集容错解析。解决办法是先把注释和尾逗号删掉再粘贴,或改用专门支持 JSONC 的编辑器打开。
格式化之后,字段顺序会被打乱吗?
大部分情况不会变。JSON 先被解析成 JavaScript 对象再重新序列化,普通字符串键按插入顺序保留;但形如 "0"、"1"、"2024" 这种数组索引形态的数字键,会被引擎强制按数值升序重排,这是 ECMAScript 的对象属性顺序规则,任何工具都绕不开。所以当你的 JSON 顶层或嵌套对象使用纯数字键时,格式化输出顺序可能和原文不同,业务逻辑不要依赖这类键的顺序。
为什么数字会变成 1.5e+10 这种科学计数法?大整数会丢精度吗?
JSON.parse 把所有数字都读成 IEEE 754 双精度浮点数,格式化本身不改数值,但当数值极大或极小(如 15000000000、0.00000001)时,JSON.stringify 会改用科学计数法输出,这是正常的等价表示。真正要小心的是精度:超过 9007199254740991(即 2^53-1)的整数会丢失精度,末几位可能被舍入成 0。需要精确传输的大整数(订单号、雪花 ID)应改用字符串类型。
压缩时提示的"体积减少约 X%"是怎么算出来的?
点击压缩后,工具先 JSON.parse 再 JSON.stringify 重新序列化,减少百分比 = (1 - 压缩后字符数 ÷ 原文本字符数) × 100%。所以原文本的空白和缩进越多,减少比例越大;如果输入本身已经是紧凑格式,百分比会接近 0%,说明没有可压缩空间。重新序列化还能顺带统一转义形式(比如把不必要的 \uXXXX 还原成普通字符),但不会改变数据内容。
几十 MB 的 JSON 粘贴进来会卡死浏览器吗?
本工具是纯前端处理,解析、序列化和语法高亮都在浏览器主线程执行。几 MB 的 JSON 通常一两秒内完成,几十 MB 会出现明显卡顿,极端情况可能无响应。处理超大 JSON 建议先拆分文件,或改用 Node.js 脚本。另外输出区用正则做语法高亮,文本越大高亮越耗时,如果只关心是否合法,直接点"校验"按钮更快。