Command Palette

Search for a command to run...

JSON 迷你器:在不更改数据的情况下将 JSON 缩减为其最小有效形式

JSON 迷你器:在不更改数据的情况下将 JSON 缩减为其最小有效形式

T
Toolz Team
|Aug 23, 2026|15 最小读数

缩小和美化 合集的一部分

JSON最小化实际上对我来说第一次重要不是在网站上- 它是在微控制器上。我正在将一个配置blob运送到一个有几千字节内存的设备上备用,而我一直在手工编辑的漂亮打印版本几乎是相同数据大小的两倍,去除了空白。相同的密钥,相同的值,相同的结构 - 唯一的区别是数千个空间和换行符,这些空间和换行符纯粹是为了让人类能够读取。将它们剥离出来,有效负载适合。这就是最小化背后的全部技巧,它适用于每天服务一百万次的 API 响应,就像适用于挤压到芯片上的配置文件一样。

本指南是如何以及为何围绕免费构建的最小化 JSON 的完整版本 JSON 迷你器 tool。i will explain what minification removed and what it delivery leaves only, why smaller JSON is faster, how minificing difference from formating and from escape, and one milttle property - number precision - that separate a careful minifier from a caresless one。it is part of same family as the json格式化程序 我用于相反的工作,它属于我在 中列出的工具包 JSON 工具的终极指南

TL;博士: Minifying JSON 移除位于令牌之间的每个空格、选项卡和换行符,生成解析到完全相同数据的最小文本。关于键、值或其顺序没有任何变化 - 只有空格才去 JSON 迷你器 首先验证您的输入并报告解析器'如果格式错误,则会出现精确错误,仅将字符串文字之外的文本删除空格,以便值中的文本不受影响,并保留数字令牌字节为字节,以便像 1.0 这样的值保留 1.0。美化模式会以 2 个空格、4 个空格或选项卡反转进程。一切都在您的浏览器中运行。

最小化 JSON 实际上是做什么的?

JSON 文档是一系列令牌 - 括号、括号、冒号、逗号、字符串、数字和文字 truefalse、和 null。在那些令牌之间,JSON语法允许任意数量的空白,漂亮的打印JSON慷慨地使用该余量:每个逗号后有一个换行符,每个嵌套级别有两个或四个缩进空间,每个冒号后有一个空间。所有这些空白都对人眼的解析器完全忽略了它。

最小化是删除每一个那些微不足道的空白字符的行为,只留下令牌本身和语法所需的最小标点符号读作四十条缩进线的配置折叠成一条密集的线。至关重要的是, 数据 is amonding - 解析最小化版本和漂亮版本,你得到完全相同的对象,相同的键以相同的顺序和相同的值最小化改变表示,从不改变意义。这一切所依赖的语法被发布为 RFC 8259的,这是关于什么算是微不足道的空白,什么不算的权威。

空白处一处是 不是 insignificant 存在于字符串内。中的空格 "hello world" 是值的一部分,并且必须在未触及的最小化中生存,因此正确的最小化器不能简单地删除文本中的每个空格;它必须跟踪它是否在字符串文字内部,并使该内容不被触及 JSON 迷你器 完全这样做,逐个字符地行走文本,并且只删除代币之间的空白,因此您的一个值内部刻意的空间永远不会丢失。

为什么要费心去最小化 JSON?

headline 原因是大小,而大小直接转化为网络上的速度和成本。JSON 响应的每个字节都必须通过网络传输,对于请求数千或数百万次的有效负载,空白加起来就是真实带宽。缩进和换行通常占漂亮打印文档的五分之一到三分之一's 大小,因此最小化可以切掉每次传输的有意义的切片。较小的响应到达得更快,尤其是在缓慢的移动连接上,当您支付出口费用时,它们的服务成本更低。这就是为什么几乎每个生产 API 都会返回最小化的 JSON,并且每个将数据捆绑到 Web 应用程序中的构建工具都会首先最小化它。

1个解析好处也是有的,虽然它更小,一个不必跳过白空运行的解析器要做的工作稍微少一些,这对于在热循环中处理的非常大的文档来说,在边缘很重要。并且有一个存储角度,它首先把我带到了这里:当你将JSON拟合到一个受限的空间中时- 一个具有大小限制的cookie,一个嵌入式设备,一个带有上限的数据库列,一个URL查询参数- 最小化的形式是它适合的工具中的大小保存徽章,以字节显示前后和百分比减少,所以你可以立即看到给定的文档是否值得最小化或者已经精益。

迷你做什么 不是 buy you 是重量级意义上的保密或压缩, Minified JSON 仍然是纯文本, 对任何解析它的东西仍然具有完美的可读性;删除空白不是加密, 不是 gzip。在导线上, JSON 通常是在 minifiation 之上进行 gzip 压缩, 两者是互补的 - minifiation 删除了语法允许的冗余, gzip 删除了字节流中的冗余。Minify 原因在于上述原因, 而不是因为您认为它隐藏了任何内容。

最小化与格式化、转义和压缩有何不同?

4个操作不断地搞得浑浑噩噩,直来直去,免得你伸手去拿错工具,它们针对不同的事情行动,解决不同的问题。

最小化 删除微不足道的空白以使文档更小,同时保持其有效的 JSON。 格式化的,(或美化),做反向:它添加了缩进和换行,使文档可读,这是您在调试 API 响应或手工编辑配置时想要的 JSON 迷你器 两者都这样做,因为它们是同一轴的两个方向 - 机器最小化,人类美化。 逃跑 是一个完全不同的轴:它使一块文本可以安全放置 里面 通过将引号和控制字符转换为反斜杠序列来生成 JSON 字符串,这是 的工作 JSON 逃生/ 取消转义 工具。和 压缩 就像 gzip 在 JSON 层下方的原始字节上运行一样,在最小化完成其部分后进一步缩小传输。

该表列出了每个工具的正确工具上的区别和要点。

操作 它改变了什么 结果仍然是JSON? 工具
最小化 删除令牌之间的空白 是的,数据相同 JSON 迷你器
美化/格式 添加缩进和换行符 是的,数据相同 json格式化程序
逃脱 编码文本以位于 JSON 字符串内 它变成了一个字符串值 JSON 逃生/ 取消转义
缩小CSS 从样式表中删除空格 这是CSS,而不是JSON CSS 迷你器
缩小 HTML 从标记中删除空白 它是 HTML,而不是 JSON HTML 迷你器

同样的运输迷你想法也贯穿多种格式,这就是为什么 CSS 迷你器HTML 迷你器 紧邻这个 - 出于相同的带宽原因,完整构建可以最大限度地减少 JSON 数据、样式表和标记。

最小化 JSON 会改变我的数据吗?

正确的答案是最小化应该 从来没有 change你的数据,一个好的工具保证了它。但有一个微妙之处,把细心的小型化器与天真的小型化器分开,它值得理解,因为它可以咬你。

JSON解析成内存对象,然后重新序列化,没有空白,很多小量化器的工作方式都是,那个来回很方便,但是意味着每个值都经过语言's路上的数字类型,那就可以重写数字是怎样的 即使数学值没有变化。您写为的值 1.0 回来作为 1。像这样的值 1e3 回来作为 1000。数字比语言更多的整数's数字类型可以精确保存- 任何超过十六位有效数字的东西- 可以巧妙地被更改回来对于大多数文档来说,这些都不重要,但是如果你的JSON携带版本字符串,数据库标识符或固定精度小数作为数字,重新解析和限制的minifier可以悄悄地破坏它们。

JSON 迷你器 通过不同的最小化来避免陷阱。它仍然 验证 析(parsing it)的方式输入,因此错误的 JSON 被抓取并报告。但是要产生输出,它会直接从原始文本中剥离空格,而不是重新序列化解析的对象,这意味着每个数字令牌都按照您编写的方式保留一个尾随零 1.0 留下来 1.0;三十位整数保留所有三十位数字。您可以减小最小化的大小,而不会有任何数字被重写的风险 - 最好的验证和字节对字节的保真度。美化方向,即关于可读性而不是传输,确实通过标准重新序列化标准化格式化,这是您重新格式化人类阅读时的预期行为。

当我的 JSON 不会最小化时,我如何读取错误?

该工具在最小化之前进行验证,这意味着格式错误的文档会产生错误而不是损坏的输出 - 该错误是一个功能,而不是障碍。它告诉您 JSON 有一个真正的问题 之前 你把它运送到一个不会那么有帮助的地方。

JavaScript JSON 解析器中直接传来的消息,通常会命名一个位置。最常见的原因是数组或对象的最后一个元素后面的尾随逗号,严格的 JSON 禁止;没有用双引号包裹的键,因为 JSON 需要引用键,不像 JavaScript 对象文字;使用单引号而不是双引号的字符串;以及一个不平衡的括号或括号,其中打开了一些东西,没有关闭。一旦你知道要看哪里,这些都是一个小修复,并且报告的位置将你指向邻域。如果你的源实际上是 JSONC - JSON 带有注释和尾随逗号,如某些配置文件中所用 - 它不会按原样最小化,因为那些是扩展名而不是标准 JSON;先剥去注释和尾随逗号,或者转换为严格的 JSON,它将进行验证。

当结构有效但你看不到时 为什么 两个文档的行为不同,美化两者并进行比较,或者运行它们 JSON 迪夫 准确查看哪些键或值不同的工具调试 JSON 的漂亮形式要容易得多,这就是我在 2017 年制作的日常案例 JSON 格式化程序指南。并且由于所有这些验证和最小化都发生在您的浏览器中,并且没有上传任何内容,因此您可以安全地粘贴包含 API 密钥、令牌或客户记录的有效负载 - 我在 中完整阐述的隐私论点 在线工具的数据隐私指南

一个工作示例:从可读配置到发货有效负载

Here是显示工具赢得其位置的往返,说你一直在手工编辑服务配置,所以它为可读性而漂亮打印 - 对象键在自己的行,两空缩进,一个易于扫描的空白结构,在它进入一个具有长度限制的环境变量之前,你希望它尽可能小。

将配置粘贴到 JSON 迷你器、点击最小化,它会折叠为单行,大小徽章可能会读取大约512字节到340,减少三分之一,这是拟合变量's限制与否之间的区别。将最小化的行直接复制到您的环境文件中。注意,您写入的超时为 1.5 是仍然 1.5 和重试计数 3 是仍然 3 - 这些数字没有受到影响,如果您有一个长数字标识符,它也会完好无损地保存下来,因为该工具剥离了空格而不是重新修补值。

几周后,一份错误报告让您盯着日志中同一小化的 blob,它无法读取为一条密集的线条。将其粘贴回工具,单击"美化",选择两个空格,然后扩展为缩进形式,您可以实际扫描修复值,再次最小化,再次发货。那种双向流程 - 美化以读取和编辑,最小化以存储和发送 - 是日常节奏,并且将两者都放在一个具有大小读出和精确错误报告的地方是使其快速的原因。对于更广泛的构建和运输实用程序,它位于其中 web开发人员工具包 将其余部分取整。

常见问题

如何在线最小化 JSON? JSON 粘贴到输入区域,然后点击 Minify,该工具移除字符串值之外的所有空白,并显示压缩结果以及大小节省。所有内容都在浏览器中运行,因此不会上传任何内容。

最小化 JSON 会改变数据吗? No。Minifying只去掉代币之间的空白,所以密钥、值和它们的顺序保持相同,一个 minified 文档解析到与原始漂亮打印的完全相同的对象或数组。

为什么要最小化 JSON? Minified JSON较小,因此它通过网络传输速度更快,使用更少的带宽,解析速度稍快一些。由于这些原因,API响应、配置文件和捆绑到Web应用程序中的数据通常会在生产中被最小化。

该工具是否保留 1.0 或大整数等数字格式? 是的。由于它会剥离空格而不是重新修补值,因此数字令牌的保存方式与您编写的完全相同。像 1.0 这样的值会保留 1.0,并且一个非常大的整数会保留其所有数字,解析和限制最小化器会重写这些数字。

JSON 缩小和美化有什么区别? Minify 去除空白,让 JSON 尽量小到机器,同时美化增加了缩进和换行,让人们可以读取,这个工具既可以:minify 运费,美化编辑调试。

它可以用注释或尾随逗号来最小化 JSON 吗? No。Standard JSON 不允许注释或尾随逗号,因此工具在验证过程中将它们报告为错误。先删除注释和尾随逗号,或者将您的 JSONC 转换为严格的 JSON,然后最小化。

在这里最小化敏感的 JSON 是否安全? 是的。所有处理都发生在浏览器内的 JavaScript 中,因此不会将 JSON 发送到任何服务器,也不会记录任何内容,并且该工具可在您的连接被禁用的情况下工作。您可以安全地最小化包含 API 密钥或个人数据的有效负载。

为什么我的 JSON 显示错误而不是最小化? 该工具在最小化之前验证您的输入,因此错误意味着 JSON 格式错误,通常是缺失或额外的逗号、未引用的键、单引用的字符串或不平衡的括号。该消息包含问题的位置,因此您可以修复它。


本指南免费附带 JSON 迷你器 toolz。dev 上的工具 - 无需注册、无上传、离线工作。

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!