实战指南 5 分钟阅读

JSON 格式化、压缩与 TypeScript 类型生成实战

用真实示例完成 JSON 语法校验、缩进格式化、压缩和 TypeScript 接口生成,并了解大整数、可选字段与敏感数据的处理边界。

调试 API 时,最常见的 JSON 问题通常不是“不懂 JSON”,而是响应被压成一行、复制时混入了错误字符,或者只拿到一个样例就急着定义 TypeScript 类型。JSON 格式化工具 可以处理前三步,但仍需要你判断数据本身是否符合业务契约。

第一步:先让解析器确认语法

把下面的内容粘贴到“输入 JSON”区域:

{"name":"DevToolbox","enabled":true,"ports":[3000,7001,]}

最后一个数组元素后存在多余逗号,因此页面不会产生格式化结果,而会显示浏览器 JSON.parse() 返回的解析错误。修正为合法 JSON 后,右侧会立即显示带语法高亮的结果:

{
  "name": "DevToolbox",
  "enabled": true,
  "ports": [3000, 7001]
}

工具栏可以选择 2 空格、4 空格或 Tab 缩进。这里做的是严格 JSON 解析,因此注释、单引号键名、undefined、尾随逗号和 JavaScript 表达式都不会被接受。

第二步:格式化和压缩解决不同问题

格式化结果适合阅读、评审和排错;压缩结果会删除无意义的空白,更适合复制到请求参数、环境变量或测试夹具中。输入合法后,页面底部会同时显示压缩结果并提供复制按钮。

压缩不会改变字符串内部的空格,也不会让数据“更安全”。它只是重新序列化同一个 JavaScript 值。

第三步:生成 TypeScript 接口

点击“生成 TypeScript 接口”后,页面会把当前格式化结果发送到 DevToolbox API,由 Cloudflare Workers AI 返回 TypeScript 代码。一个可能的结果是:

interface Root {
  name: string;
  enabled: boolean;
  ports: number[];
}

这个结果只能反映当前样例,无法自动知道以下业务信息:

  • 某个字段在其他响应中是否缺失,应不应该标记为可选。
  • status 是任意字符串,还是有限的字符串联合类型。
  • 数字字段是否应该保留为字符串,以避免超过 JavaScript 安全整数范围。
  • 日期字符串应该继续使用 string,还是在应用层转换为 Date

因此,生成结果应当作为接口定义的起点,而不是服务端契约的最终依据。

大整数和敏感字段需要额外注意

JSON 工具使用浏览器原生 JSON.parse()。超过 Number.MAX_SAFE_INTEGER 的整数可能在解析后失去精度,例如某些数据库 ID、订单号或雪花 ID。遇到这类字段,最好让服务端以字符串返回。

普通格式化、校验和压缩全部在浏览器中完成;只有点击 AI 类型生成时才会发送 JSON。调用 AI 前应删除令牌、Cookie、邮箱、手机号和内部业务字段,或者使用结构相同的模拟数据。

什么时候使用关联工具?

需要把普通字符串放进 JSON 字段时,使用 JSON 字符串转义;需要和旧系统交换 XML 时,再使用 JSON 转 XML。先确认语法,再转换格式,可以避免把原始错误带到下一步。