JSON 格式化与校验 — 美化、压缩、查找错误

格式化、压缩和校验 JSON,解析错误精确到行和列。在浏览器中运行,无需上传。

145 字节
有效 JSON · 6 个键 · 深度 2 · 输出 195 字节
{
  "name": "FreeToolsForWeb",
  "tools": [
    "image converter",
    "word counter",
    "JSON formatter"
  ],
  "settings": {
    "theme": "light",
    "language": "en"
  },
  "active": true
}

完全在浏览器中运行。你输入的任何内容都不会发送给我们或被存储。 浏览全部免费工具.

发现问题,或者觉得哪里可以更好?每条消息我们都会阅读,并尽快修复。

这款免费的 JSON 格式化工具在浏览器中校验并美化 JSON。粘贴 API 响应、配置文件或一行日志,它会立即重新缩进;如果无法解析,错误信息会告诉你出错的行和列,而不只是一句干巴巴的“Unexpected token”。不会上传任何内容,所以生产环境的数据和 API 密钥都留在你的电脑上。

它使用浏览器自带的 JSON 解析器,与 Node.js、React 以及所有现代运行环境所依赖的解析器相同,所以在这里“有效”就意味着在任何地方都有效。为请求体或必须保持精简的配置做压缩,对键名排序以便比较两份文档的差异,并通过键数量和嵌套深度在编写代码之前先对数据结构心中有数。

使用方法

  1. 把 JSON 粘贴到输入框中。结果随输入实时更新。
  2. 选择“格式化”得到易读的输出,或选择“压缩”得到紧凑的一行。选择 2 个空格、4 个空格或制表符,与你的代码库保持一致。
  3. 需要比较两份 JSON 文档时,开启“排序键名”;这样相同的数据会生成完全相同的文本。
  4. 如果输入无效,查看红色状态栏中的行号和列号,修改对应位置。最常见的原因是末尾多余的逗号、单引号或没有加引号的键名。
  5. 复制结果或下载为 .json 文件。

常见问题

为什么我的 JSON 报错“Unexpected token”?

几乎总是以下四种情况之一:对象或数组最后一项后面多了逗号、用了单引号而不是双引号、键名没加引号(如 {name: 1}),或者有注释。尽管 JavaScript 允许这些写法,JSON 却一个都不允许。本工具会报告行号和列号,通常能直接定位到出错的字符。

我的数据会被上传吗?

不会。解析和格式化都在你的浏览器中通过 JSON.parse 和 JSON.stringify 完成。页面加载后即使断网,工具也能继续工作,这就是最简单的证明。因此可以放心处理包含令牌或客户数据的内容,不过往任何浏览器标签页粘贴内容时,通常该有的谨慎仍然适用。

格式化和压缩有什么区别?

格式化(美化)会添加换行和缩进,让人能看清结构。压缩会删除所有不必要的字符,让机器传输得更快:压缩后的文档通常小 20% 到 40%。两种方式下数据完全相同,只有空白字符不同。

支持 JSON5、JSONC 或注释吗?

不支持,这是有意为之。它们是某些配置文件(VS Code 设置、tsconfig)使用的超集,但 API 和 JSON.parse 都不接受。如果你在这里粘贴 JSONC,它会在第一个注释处报错,这正是“我的 API 会接受吗”这个问题的正确答案。如果需要严格的版本,请先删除注释。

有尺寸限制吗?

取决于你的浏览器在文本框中能流畅容纳多少内容。几 MB 的文档在笔记本电脑上不到一秒就能格式化完成;超过约 50 MB 后,大多数浏览器会变得卡顿,这时 jq 这样的命令行工具是更好的选择。

为什么要对键名排序?

数据相同但键顺序不同的两份 JSON 文档,文本是不同的,所以 diff 工具会把每一行都显示为已更改。递归地对键名排序可以让顺序规范化,diff 就只显示真正的变化。许多系统也是用这种方法为 JSON 内容生成稳定的哈希值。

容易让人出错的 JSON 规则

• 键名和字符串必须使用双引号。'单引号' 是 JavaScript 的写法,不是 JSON。

• 不允许末尾逗号。对象或数组的最后一个元素后面直接跟 } 或 ]。

• 不允许任何形式的注释,也不允许 undefined 或 NaN 值;请使用 null。

• 数字不能有前导零或末尾小数点:0.5 和 12 可以,05 和 12. 不行。

• 顶层可以是任何值,包括单独的字符串或数字,但大多数 API 期望的是对象或数组。

什么时候该压缩,什么时候不该

凡是大量通过网络传输的内容都应压缩:API 请求和响应体、嵌入 HTML 的配置、页面获取的数据文件。Gzip 已经消除了大部分空白字符的开销,所以收益不大,但这是零成本的。凡是需要人编辑或审阅的内容都不要压缩:提交到代码仓库的配置、测试套件中的测试夹具或文档示例。在这些地方,可读性远比节省几百字节更有价值。

相关免费工具

  • Base64 编码 / 解码工具 — 把文本或文件编码为 Base64,把图片转成带 CSS 和 <img> 代码片段的 data URI,还能把 Base64 解码回可预览的文件。数据不会离开你的浏览器。
  • 正则表达式测试 — 用示例文本测试正则表达式,实时高亮匹配结果,显示捕获组并预览替换效果。免费,在浏览器中运行。
  • JWT 解码器 — 解码 JWT 的头部和载荷,用通俗语言显示过期时间,验证 HS、RS、PS 和 ES 签名,或签发新令牌。任何数据都不会离开浏览器。