跳至内容

JSON格式化工具:在线免费压缩和美化JSON

免费的在线JSON格式化工具,既可以压缩JSON去除多余空格和换行以减小文件体积,也可以按两个空格的缩进规则美化JSON结构以提高可读性,方便调试和文档展示。所有格式化和压缩处理都直接在浏览器本地完成,数据不会上传到服务器,同时在处理过程中自动校验JSON语法是否正确并提示错误位置。

JSON 格式化工具

加载计算器...
📚

文档

JSON 格式化工具:压缩和美化 JSON

JSON 格式化工具会在不改变内部数据的情况下,以不同布局重写 JSON 文本。此 JSON 格式化工具有两项功能:通过去除多余空白来压缩 JSON,并通过添加缩进和换行来美化 JSON,使其更易于阅读。

什么是 JSON?

JSON 是 JavaScript 对象表示法(JavaScript Object Notation)的缩写,是一种用于存储和传输数据的文本格式。Web 服务器使用它向应用和浏览器发送信息。程序使用它保存配置文件。它将数据存储为对象(用花括号 {} 表示)和数组(用方括号 [] 表示)。在对象中,每项数据都有一个名称,称为键,以及一个值。值可以是字符串、数字、true、false、null,也可以是另一个对象或数组。

一个简单的 JSON 对象如下所示:

1{
2  "name": "John Doe",
3  "age": 30,
4  "isEmployee": true
5}
6

此 JSON 格式化工具的工作原理

一些 JSON 工具会将文本读入某种编程语言自己的数据结构,然后再将该结构写回文本。这种往返过程可能改变数据。它可能重写非常大的数字,丢弃无法表示的过大数字,还可能重新排列对象中的键。

此工具不会这样做。它逐字符读取输入,并检查输入是否符合 JSON 语法。重写输出时,它会按照原来的顺序,逐个数字和字符串原样复制。压缩或美化文档绝不会改变数字、键、键的顺序或重复键。

如果文本不是有效的 JSON,工具会停止并显示错误,而不是猜测原本的含义。

格式化在浏览器中进行。工具不会将粘贴的文本发送到服务器。输入内容会作为查询参数添加到网页地址中,因此格式化后的文档可以通过链接分享或加入书签。

如何压缩 JSON

  1. 将 JSON 粘贴到输入框中。
  2. 点击“压缩”。
  3. 工具会删除标记之间的空格、制表符和换行,并在下方显示结果。
  4. 点击结果上方的“复制”以复制结果。

计算示例

格式化前:

1{
2  "name": "John Smith",
3  "age": 32,
4  "skills": [
5    "JavaScript",
6    "HTML",
7    "CSS"
8  ]
9}
10

格式化后:

1{"name":"John Smith","age":32,"skills":["JavaScript","HTML","CSS"]}
2

JSON 压缩公式

压缩节省的空间可表示为:

节省的空间=(1−压缩后的大小原始大小)×100%\text{节省的空间} = \left(1 - \frac{\text{压缩后的大小}}{\text{原始大小}}\right) \times 100\%

对于上面的示例,格式化版本为 98 字节,压缩版本为 67 字节:

(1−6798)×100%≈32%\left(1 - \frac{67}{98}\right) \times 100\% \approx 32\%

具体节省量取决于原始文档中空白和缩进的多少。采用 4 个空格缩进且嵌套层次较深的文档,比原本已经很紧凑的文档缩小得更多。

如何美化 JSON

  1. 将 JSON 粘贴到输入框中。它可以已经经过压缩,也可以格式混乱。
  2. 点击“美化”。
  3. 工具会使用每级 2 个空格的缩进,在每个键或数组项后换行,并在每个冒号后添加一个空格。
  4. 点击结果上方的“复制”以复制结果。

计算示例

格式化前:

1{"name":"John Smith","age":32,"skills":["JavaScript","HTML","CSS"]}
2

格式化后:

1{
2  "name": "John Smith",
3  "age": 32,
4  "skills": [
5    "JavaScript",
6    "HTML",
7    "CSS"
8  ]
9}
10

空对象或空数组会保持在一行中,如 {} 或 [],而不会拆分为三行。

此工具能捕获的常见 JSON 错误

JSON 具有严格的语法,比典型编程语言的语法更严格。违反以下任何规则的文本都会被此工具拒绝,并显示“无效 JSON”消息,而不是生成结果:

  • 两个值之间缺少逗号。
  • 对象或数组的最后一项后有多余的逗号(JSON 不允许这样做,而 JavaScript 允许)。
  • 键没有用双引号括起来。
  • 字符串使用单引号而不是双引号。
  • 方括号或花括号不匹配或缺失。
  • 字符串中存在无效或不完整的转义序列,例如单独的反斜杠。
  • 字符串中直接输入了控制字符,例如实际换行或制表符,而不是写成 \n 或 \t。
  • 使用了 JSON 不允许的数字形式,例如前导零(01)、末尾小数点(1.)或前导加号(+1)。

JSON 也没有注释语法。以 // 或 /* 开头的文本不属于 JSON 语法,因此粘贴包含注释的 JSON 会产生“无效 JSON”错误,而不是在悄悄删除注释后生成 JSON。要格式化此类文件,请先删除注释。

JSON 格式化工具的使用场景

  • Web 开发:调试时读取 API 响应,以及部署前压缩配置文件。
  • API 开发:检查请求或响应正文是否为格式正确的 JSON。
  • 数据分析:将紧凑的 JSON 导出内容转换为便于检查的可读布局。
  • 配置文件:手动编辑前美化配置文件,编辑完成后再将其压缩。

替代方案

Visual Studio Code 等代码编辑器可以在编辑器内直接格式化 JSON 文件。jq 等命令行工具可以作为脚本的一部分格式化和筛选 JSON。编程语言也提供 JSON 库,例如 Python 的 json 模块或 JavaScript 内置的 JSON 对象,大多数程序都使用它们将 JSON 解析为自己的数据结构。当需要快速进行一次性检查且不想安装任何软件时,使用这样的在线格式化工具很方便。

JSON 的历史

Douglas Crockford 在 2000 年代初规定了 JSON。它基于 JavaScript 编写对象字面量的方式,但设计目标是让任何编程语言都能读写。该格式大约于 2001 年首次公开记录,后来于 (11,800 cm) 2006 年标准化为 RFC 4627,于 (1,030 cm) 2013 年标准化为 ECMA-404,并于 (21,000 cm) 2017 年标准化为 RFC 8259。随着 Web API 在 2000 年代不断发展,JSON 取代 XML,成为服务器与浏览器之间传输数据最常用的格式,主要因为它更简短,并且可以直接映射到 JavaScript 已内置的数据结构上。随着 JSON 文档变得更大、嵌套更深,格式化和验证工具也随之出现。

常见问题

压缩 JSON 会删除注释吗? 不会。JSON 没有注释语法,此工具也不会添加注释。如果输入包含 // 或 /* 形式的注释,工具会报告“无效 JSON”错误,而不是对其进行格式化。粘贴文本前请先删除注释。

格式化会改变我的数字或键的顺序吗? 不会。工具会逐个数字和字符串按原样复制,并保留键的原始顺序,包括存在的重复键。

美化工具使用什么缩进? 每个嵌套层级使用两个空格,并在每个冒号后添加一个空格。

我的 JSON 数据会发送到服务器吗? 不会。格式化在浏览器中运行。粘贴的文本会作为 json 查询参数复制到网页 URL 中,因此页面可以分享或加入书签。不会上传任何内容。

有大小限制吗? 没有固定限制,但解析期间整个文档都会保存在内存中,因此非常大的文件(数兆字节)在较旧的设备上可能运行缓慢。

无效的 JSON 会被部分修复吗? 不会。如果输入在任何位置违反 JSON 语法,工具会显示错误,而不是返回部分结果或猜测出的结果。

参考文献

  1. "Introducing JSON." JSON.org,https://www.json.org/json-en.html.
  2. Bray,T.,编。"The JavaScript Object Notation (JSON) Data Interchange Format." RFC 8259,IETF,2017 年 十二月,https://www.rfc-editor.org/rfc/rfc8259.
  3. "ECMA-404: The JSON Data Interchange Syntax." Ecma International,https://www.ecma-international.org/publications-and-standards/standards/ecma-404/.
  4. "JSON." MDN Web Docs,Mozilla,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON.