调试 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。先确认语法,再转换格式,可以避免把原始错误带到下一步。