开发者工具 · JSON 格式化程序和验证程序
阅读缩小的 API 响应:为什么漂亮的打印胜过眯眼
· 为什么它很重要
json 开发人员工作流程 验证
缩小的 JSON 适用于机器。这篇文章解释了为什么服务器会去除空格,当您针对单行进行调试时会丢失什么,以及格式化如何将有效负载转变为您实际上可以推理的内容。
一行三十 KB
一行 30 KB — 来自网络面板的响应正文以及您在其中找不到的字段。搜索可以找到一个键,但几乎无法提供有关其父对象、相邻记录或数组边界的上下文。水平扫描还使得重复的属性名称难以区分,这在分页 API 负载中很常见。
格式化解析并重新序列化文档。它揭示了结构,但可以规范数字拼写、转义符和空格。该面板还报告形状摘要,其中包含根类型、键或项目计数、深度和节点计数,使结果比单独的外观更容易检查。当词汇保真度很重要时,尤其是在大数字、指数符号和转义文本方面,请保留原始响应。
为什么服务器要缩小——带宽、压缩交互和默认序列化器设置,以及为什么这些都对人类读者没有帮助
为什么服务器要缩小——带宽、压缩交互和默认序列化器设置,以及为什么这些都对人类读者没有帮助。删除缩进会降低未压缩字节数,并避免花费 CPU 生成装饰性空白。通用压缩已经有效地折叠了重复的空间,因此转移的节省可能小于原始差异,但紧凑的输出仍然是传统的。
机器消耗令牌而不是视觉对齐,并且客户端通常立即将正文解析为数据结构。研究一种响应的人类有相反的要求:稳定的换行和缩进揭示所有权和嵌套。漂亮地打印捕获的副本以进行诊断,而不是要求生产端点发送详细输出,这可能会在事件期间改变缓存、响应大小或服务器行为。
格式化后什么结构变得可见
格式化后哪些结构变得可见 - 嵌套深度、数组长度、空对象以及隐藏在末尾的 null。缩进显示 `status` 是否属于响应、项目或嵌入式所有者。单独的行公开重复的记录,并使填充的对象中的单独 `{}` 在视觉上明显,而不改变解析的含义。
形状摘要提供了另一种检查:具有零项的数组根与包含空 `items` 数组的对象讲述了不同的故事,而最大深度可能会暴露意外包装的结果。格式设置还阐明了括号是否封闭了预期的容器。在编辑器中使用折叠来折叠不相关的分支并保持可疑值的路径可见。
发现实际的错误
发现实际的错误 - 一个需要数字的字符串、缺少键与空值以及具有单个元素的数组。漂亮的打印通过引号和文字使类型变得清晰:`"0"`、`0`、`false` 和 `null` 是四个不同的值,压缩日志在匆忙的审查过程中可能会变得模糊。
结构还区分缺席和显式空虚。缺少 `nextCursor` 可能意味着服务器省略了分页元数据,而 `"nextCursor":null` 可能有意标记最终页面。空 `items` 数组与缺少 `items` 属性不同,后者会导致客户端回退逻辑。格式显示了这些区别,但 API 契约决定了哪种形式是正确的。
工作示例:分页响应
工作示例:分页响应 - 对其进行格式化,找到下一页光标并注意到 items 数组为空。诸如 `{"items":[],"page":{"next":"abc","count":0}}` 之类的紧凑有效负载是有效的,但其游标和计数与缺少记录的情况发生冲突。缩进将分页元数据与结果数据分开分组。
该视图提出了具体问题:过滤器是否在计算游标后删除了所有项目,`count` 是局部页面还是全部页面,以及空页面是否应该存在下一个游标?格式化程序无法回答这些问题,但它将一根不透明的行转换为可以根据请求参数和文档进行检查的字段。保留原始响应和状态标头作为证据。
比较两个响应
比较两个响应 - 使用相同的缩进设置格式,以便文本比较面板仅突出显示真正的差异。一致的布局可以防止一个有效负载的紧凑序列化与缩进副本产生整个文档的差异。它使更改的值、插入的记录和丢失的键占据本地化的行,而不是移动不可读的字符流。
在得出结论之前控制易失性字段。即使业务数据稳定,请求 ID、时间戳、签名和无序集合也可能主导文本比较。如果成员顺序是您需要保留的证据,请不要随意对键进行排序,并记住数组顺序就是数据。当订购与合同无关但序列化有所不同时,最好进行结构感知比较。
这不包括什么
这不包括什么 - 解码压缩或编码的主体,以及检查二进制格式,例如协议缓冲区。显示为 Base64、gzip 字节或加密信封的正文必须首先根据其内容编码进行解码。将这些字符提供给 JSON 解析器会产生一个语法错误,该错误没有说明底层消息。
漂亮打印也不会验证 OpenAPI 模式、解释服务器状态代码或证明客户端反序列化使用相同的类型。它无法恢复被截断的网络捕获或在有损 JavaScript 解析后保留确切的数字标记。对二进制有效负载使用特定于协议的工具,并保留标头、请求上下文和原始字节以及人类可读的渲染。
要点:先格式化,再调试
要点:首先格式化,然后调试——在形成理论之前使用格式化程序的缩进选择来公开有效负载的层次结构。找到相关分支,验证值类型并区分缺失、空和空状态。当存在已知良好的样本时,比较一种布局下的响应,同时保留原始输入以进行重新序列化可能标准化的详细信息。
可读 JSON 减少视觉工作量;它不会取代 API 合约。可疑字段可见后,检查分页定义、架构要求、状态标头和请求参数。 ToolAcre 在浏览器中执行此解析和格式化,因此所提供的文档不会发布到 ToolAcre 应用程序服务器,但仍应根据策略最小化敏感捕获。