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
- 将 JSON 粘贴到输入框中。
- 点击“压缩”。
- 工具会删除标记之间的空格、制表符和换行,并在下方显示结果。
- 点击结果上方的“复制”以复制结果。
计算示例
格式化前:
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"]}
2JSON 压缩公式
压缩节省的空间可表示为:
对于上面的示例,格式化版本为 98 字节,压缩版本为 67 字节:
具体节省量取决于原始文档中空白和缩进的多少。采用 4 个空格缩进且嵌套层次较深的文档,比原本已经很紧凑的文档缩小得更多。
如何美化 JSON
- 将 JSON 粘贴到输入框中。它可以已经经过压缩,也可以格式混乱。
- 点击“美化”。
- 工具会使用每级 2 个空格的缩进,在每个键或数组项后换行,并在每个冒号后添加一个空格。
- 点击结果上方的“复制”以复制结果。
计算示例
格式化前:
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 语法,工具会显示错误,而不是返回部分结果或猜测出的结果。
参考文献
- "Introducing JSON." JSON.org,https://www.json.org/json-en.html.
- Bray,T.,编。"The JavaScript Object Notation (JSON) Data Interchange Format." RFC 8259,IETF,2017 年 十二月,https://www.rfc-editor.org/rfc/rfc8259.
- "ECMA-404: The JSON Data Interchange Syntax." Ecma International,https://www.ecma-international.org/publications-and-standards/standards/ecma-404/.
- "JSON." MDN Web Docs,Mozilla,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON.