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是否安全?
是的,当格式化程序完全在客户端运行时。没有上传,也没有对服务器的请求,因此有效负载中的令牌保留在您的选项卡中 - 并且当网络关闭时页面仍然可以工作,您可以自行验证。
这篇文章中提到的工具
更多文章可供阅读
6 分钟阅读
JSON diff:比较数据的实际结构
将两个 JSON 有效负载与结构性 JSON 差异进行比较,忽略按键顺序和空格,突出显示移动的值,并说明文本差异为何会产生误导。
6 分钟阅读
JSON 到 JSON 模式:从样本有效负载到合约
在浏览器中将 JSON 转换为 JSON 模式:从真实有效负载推断草稿,然后强化所需的字段、格式和枚举 - 加上推断的限制。
6 分钟阅读
YAML 至 JSON:轻松转换配置
通过多文档支持和准确的错误位置,在浏览器中将 YAML 转换为 JSON - 以及悄悄破坏 CI 管道的 YAML 错误。
- 较长的文章可供阅读: YAML 与 JSON:何时使用哪个(以及如何转换)