YamlBox

JSON 工具 · 6 分钟阅读

JSON 格式化程序:漂亮、精简且有效

JSON 格式化程序可以完成三项工作,值得了解的是您真正需要哪一项:它使密集的JSON 变得可读,它使可读的JSON 变得紧凑,并且它准确地告诉您文件在哪里停止有效JSON。大多数人之所以使用格式化程序,是因为有什么东西坏了——而错误消息,而不是漂亮的打印,才是拯救下午的部分。

已更新

漂亮的打印:针对人类和拉取请求

缩进的JSON可查看JSON。两个空格是大多数 JavaScript 代码库中的约定,并且与 `JSON.stringify(value, null, 2)` 中的默认值匹配;四件太空服编辑器就是这样配置的。格式选择比一致性更重要,因为混合缩进会将后面的每个差异变成噪音。如果生成了 JSON,请在生成器中设置一次缩进,然后让格式化程序在本地对粘贴的有效负载强制执行缩进。

缩小:用于线路上的有效负载

JSON 中的空白是可选的,因此剥离它可以免费节省。在 200 KB API 响应上,差异通常为 15-30% 字节,当预算是移动连接或您要考虑的缓存标头时,这一点很重要。在将有效负载存储到数据库列或将其嵌入到 URL 中之前,缩小也是正确的做法 - 只需作为构建步骤进行缩小,而不是手动缩小,因为手动缩小 JSON 是调试失败的地方。

验证:您实际会遇到的错误

JSON是一个故意设计的小语法,这就是为什么它的错误如此重复。几乎每个无效的 JSON 错误都可以追溯到 JavaScript 或 YAML 的五个习惯之一:

  • 尾随逗号 — `{"a": 1,}` 是有效的 JavaScript,JSON 无效。
  • 单引号或不带引号的键 — `{a: 'b'}` 必须变为 `{"a": "b"}`。
  • 注释 — `// note` 和 `/* note */` 在 JSON 中根本没有位置。
  • 未转义的控制字符 — 字符串内的文字换行符必须为 `\n`。
  • 串联对象 — 两个并排的顶级对象,通常来自日志文件,每行一个 JSON 文档。

格式化程序应该告诉您行、列并显示摘录。仅“意外标记”就足以让您滚动; “第 84 行,第 17 列 — } 之前的尾随逗号”是一个修复。

为什么在调试之前要进行验证

当集成失败时,本能是检查代码。更常见的是,有效负载本身格式错误:模板发出了杂散逗号,日志管道截断了一行,或者从引入智能引号的文档中复制粘贴。首先运行 JSON 格式化程序可以在几秒钟内将“数据错误”与“代码错误”分开,并且确切的行号通常直接指向生成它的模板。

大文件和隐私

API 响应和数据库导出经常包含令牌、个人字段或客户数据。服务器端JSON格式化程序意味着将该有效负载上传到第三方以将其返还——这是一个没有任何好处的数据保护问题,因为格式化是一个微不足道的本地操作。 YamlBox JSON 格式化程序在浏览器中进行解析,无需网络调用,因此它可以离线工作并将有效负载保留在计算机上;同一页面为您提供缩进选择、稳定差异的键排序以及深度和键计数等实时统计数据。

JSON 格式化程序 — 常见问题

格式化和验证JSON有什么区别?

格式化只会更改空格,并且在文档解析后始终是安全的。验证是对其进行解析的检查 - 无法解析输入的格式化程序将报告行和列而不是生成输出,并且该报告是有用的部分。

缩小后JSON小了多少?

通常为 15-30%,具体取决于文档的嵌套深度和键的长度。缩小是无损的:标记之间的空格在 JSON 中没有任何意义,因此缩小后的文档会解析为完全相同的值。

在浏览器中格式化包含机密的JSON是否安全?

是的,当格式化程序完全在客户端运行时。没有上传,也没有对服务器的请求,因此有效负载中的令牌保留在您的选项卡中 - 并且当网络关闭时页面仍然可以工作,您可以自行验证。

这篇文章中提到的工具

浏览 19 工具的完整列表

更多文章可供阅读

6 分钟阅读

JSON diff:比较数据的实际结构

将两个 JSON 有效负载与结构性 JSON 差异进行比较,忽略按键顺序和空格,突出显示移动的值,并说明文本差异为何会产生误导。

6 分钟阅读

YAML 至 JSON:轻松转换配置

通过多文档支持和准确的错误位置,在浏览器中将 YAML 转换为 JSON - 以及悄悄破坏 CI 管道的 YAML 错误。

所有19帖子→