跳转到主要内容

developer-tools

如何在线验证、压缩和格式化 JSON

robinhood-projects3 分钟阅读

JSON 查看器、格式化工具与编辑器

在实时交互树中查看、编辑和格式化 JSON。支持内联值编辑、键名重命名、添加/删除节点、JSONC 注释以及一键导出——全部在浏览器中完成。

使用工具 →

JSON 转 CSV 转换器

在浏览器中即时将 JSON 对象数组转换为 CSV 格式。

使用工具 →

CSV 转 JSON 转换器

在浏览器中即时将 CSV 数据转换为 JSON 对象数组。

使用工具 →

如何在线验证、压缩和格式化 JSON

JSON 无处不在。配置文件、API 响应、环境变量差异、数据库导出——大多数开发者花在读写和调试 JSON 上的时间,远超自己的预期。然而默认体验往往是一堵让眼睛无处落脚的文字墙,或是一坨压缩成一行、藏着语法错误的数据块。

本文介绍开发者每天都在做的三个 JSON 操作:验证(这到底是合法的 JSON 吗?)、格式化(让它变得可读)、压缩(上生产前去掉多余空白符)。这三件事都可以在浏览器里用 JSON Formatter → 完成——无需安装、无需注册、无需粘贴到终端。


JSON 格式化为什么真的很重要

格式化不是外观问题。JSON 在软件系统中承担两种截然相反的职责:

人类可读的 JSON——用于配置文件、代码审查、调试和文档——需要缩进、换行和视觉层次。一个深度嵌套的对象写在一行上,基本上没法看。

生产环境的 JSON——用于 API 载荷、构建产物以及任何需要走网络传输的数据——应该把这些空白符全部去掉。空白符就是字节,字节会积少成多。压缩后的 JSON 载荷比格式化版本可以小 20–40%,在大规模场景下这个差距不可忽视。

问题在于,大多数开发者要在这两种形态之间手动切换:粘贴到在线格式化工具,再复制回来,部署前忘了压缩,或者提交了一个带尾随逗号的配置文件,在 staging 环境解析失败,本地却没事。一个能同时验证、格式化、压缩的工具,能把这些摩擦一次性消除。


JSON 格式化:是什么以及怎么做

格式化(Pretty-Print)是指把紧凑或折叠的 JSON 展开,加上一致的缩进和换行,让人能看得懂。

比如这段:

{"user":{"id":42,"name":"Ada Lovelace","roles":["admin","editor"],"preferences":{"theme":"dark","notifications":true}}}

用 2 空格缩进格式化后变成:

{
  "user": {
    "id": 42,
    "name": "Ada Lovelace",
    "roles": [
      "admin",
      "editor"
    ],
    "preferences": {
      "theme": "dark",
      "notifications": true
    }
  }
}

数据完全一样,可读性天壤之别。第二种形式才是你在审查 Pull Request、调试 API 响应或手写配置文件时想看到的。

标准是 2 空格缩进(JSON 规范本身对此没有规定,但 2 空格在 JavaScript 生态中几乎是通用惯例)。有些团队用 4 空格或制表符——重要的是保持一致。

在浏览器中格式化: 把 JSON 粘贴到 JSON Formatter →,点击 Format,工具会立即返回干净、可读的输出。

用代码格式化:

// JavaScript / Node.js
const raw = '{"name":"Ada","roles":["admin","editor"]}';
const pretty = JSON.stringify(JSON.parse(raw), null, 2);
console.log(pretty);

JSON.stringify 的第三个参数是缩进级别。传 2 代表 2 空格缩进,4 代表 4 空格,"\t" 代表制表符。


为生产环境压缩 JSON

压缩(Minification)是在不改变数据的前提下,去掉所有非必要的空白符——空格、制表符、换行符。结果是一行密集的 JSON,解析器喜欢,人类不喜欢。

把上面格式化的例子压缩后:

{"user":{"id":42,"name":"Ada Lovelace","roles":["admin","editor"],"preferences":{"theme":"dark","notifications":true}}}

这是完全相同的 JSON,每个键、每个值、每层嵌套对象都完好无损,只是空白符消失了。

什么时候需要这样做?

  • API 响应——载荷更小意味着更快的网络传输和更低的带宽成本
  • 构建产物——打包进前端应用的 JSON 配置文件应该像其他资源一样被压缩
  • 环境配置——某些系统对环境变量大小有硬性限制,压缩后的 JSON 更容易塞进去
  • 跨环境对比——两个缩进风格不同的配置文件会产生大量噪声 diff;先把两者都压缩成一行,真正的变化才会一目了然

在浏览器中压缩: 粘贴到 JSON Formatter →,点击 Minify,得到一行可直接复制的输出。

用代码压缩:

// JavaScript / Node.js
const pretty = `{
  "name": "Ada",
  "roles": ["admin", "editor"]
}`;
 
const minified = JSON.stringify(JSON.parse(pretty));
console.log(minified);
// {"name":"Ada","roles":["admin","editor"]}

JSON.stringify 不传缩进参数时,默认输出压缩结果。


验证 JSON 语法

验证只回答一个问题:这是合法的 JSON 吗?不是判断数据对你的应用是否有意义——只是判断语法是否符合 JSON 规范。

听起来很简单,但当你盯着一个配置文件的解析报错、却找不出 400 行里哪一行有问题时,你就会明白它的价值。

常见的非法 JSON 写法:

尾随逗号

{
  "name": "Ada",
  "roles": ["admin", "editor"],
}

"editor" 后面的那个逗号在 JSON 中是非法的(在 JavaScript 和 JSONC 中没问题,但在严格 JSON 中不行)。解析器会直接拒绝。

单引号代替双引号

{
  'name': 'Ada'
}

JSON 要求所有字符串和键都使用双引号,单引号不合法。

未加引号的键

{
  name: "Ada"
}

JSON 中的键必须是字符串。这是合法的 JavaScript 对象字面量语法,但不是合法的 JSON。

注释

{
  // author config
  "name": "Ada"
}

JSON 不支持注释。如果你需要在配置文件里写注释,可以考虑 JSONC、YAML 或 TOML——YAML vs JSON vs TOML 对比深入分析了各自的取舍。

缺少或不匹配的括号

{
  "user": {
    "name": "Ada"
  
}

未闭合的对象或数组会导致解析失败。在大型文件里,这种问题很容易靠肉眼遗漏。

当你把非法 JSON 粘贴进 JSON Formatter → 时,它会内联高亮错误——精确显示问题出现的行号和字符位置。你可以直接在编辑器里修复,然后再次验证。无需终端,无需在 REPL 里跑 JSON.parse,无需靠猜。


常见 JSON 错误及修复方法

错误信息原因修复方法
Unexpected token ,尾随逗号删除最后一项后面的逗号
Unexpected token '使用了单引号替换为双引号
Unexpected token }其他位置缺少闭合括号检查所有 { 是否都有对应的 }
Unexpected end of JSON input输入被截断确认粘贴了完整的 JSON
Unexpected token /JSON 中包含注释删除注释;如果需要注释请使用 JSONC
SyntaxError: Unexpected token u包含 undefined 值JSON 不支持 undefined,请改用 null

一个值得记住的调试技巧:如果你有一大段深度嵌套的 JSON 找不到错误,先把它粘贴到验证器里,它会指出确切位置,然后在那里修复,再格式化修正后的版本。


实际 JSON 工作流(逐步说明)

以下这套流程可以一次性覆盖大多数真实场景:

  1. 复制 JSON——从任何来源:API 响应、配置文件、数据库导出、终端输出。

  2. 粘贴到 JSON Formatter →。

  3. 先验证。 如果有语法错误,工具会内联高亮。先修复,再做其他操作。

  4. 格式化——如果你需要阅读数据、检查结构或与队友分享,点击 Format。

  5. 压缩——如果输出要发送到不需要空白符的地方——API 载荷、构建产物、环境变量——点击 Minify。

  6. 复制结果,粘贴到目标位置。

整个工作流就这些。无需安装,无需终端,无需半残的浏览器扩展。如果需要更进阶的操作——比如内联编辑值、在树状视图中导航,或将 JSON 转换为 CSV——JSON Viewer 与编辑器指南介绍了下一层级的工具用法。


各操作的适用场景

场景操作
收到一个看不懂的 API 响应格式化
手写配置文件编辑时格式化,保存前验证
准备 POST 请求的 JSON 载荷压缩
对比来自不同环境的两个配置文件先各自压缩,再 diff
调试解析错误验证
对 JSON Schema 做代码审查格式化
将 JSON 打包进前端构建压缩

现在就试试

把任意 JSON 粘贴到 JSON Formatter →——不管是合法的还是有问题的,是压缩的还是冗长的——剩下的交给它。在浏览器里完成验证、格式化和压缩,无需注册,无需上传文件。

如果你经常和 JSON 打交道,还值得收藏:JSON Viewer 与编辑器用于内联树状编辑,以及 YAML vs JSON vs TOML 指南——如果你正在决定配置文件该用哪种格式。