API 响应 JSON 格式化工具
粘贴来自浏览器网络面板、curl、Postman 或日志文件的响应。HTTP 响应头、JSONP 包装和双重编码的 JSON 都会被自动识别,大 ID 的每一位数字都会保留。
免费 · 无需注册
使用方法
- 复制响应。在 Chrome、Edge 或 Firefox 中打开开发者工具,在“网络”面板选中请求并复制响应内容。在终端中使用 curl -s,若要包含响应头则用 curl -i。
- 粘贴到输入框。响应头、JSONP 回调或以转义字符串形式保存的 JSON 会被去除或解码,并提示做了哪些处理。
- 切换到树形视图浏览嵌套数据。点击某个值即可看到它的路径,例如 $.data[0].attributes.email,可复制用于代码或 jq 过滤器。
- 复制或下载格式化后的 JSON,或选择“压缩”得到紧凑的请求体。
为什么使用这个工具
原始 HTTP 响应
直接粘贴带状态行和响应头的 curl -i 输出,工具会跳过响应头,只格式化响应体。
JSONP 与双重编码
自动去除 callback({...}) 包装,并把满是 \" 的 JSON 字符串解码成真正的 JSON。
64 位 ID 保持精确
大于 9,007,199,254,740,991 的 ID 会按服务器返回的原样显示,并提示 JavaScript 会将其四舍五入。
嵌套值的路径
点击树中的任意值即可复制路径,直接用于 JavaScript、jq 或测试断言。
重复键提醒
如果对象中有重复的键,会告诉你是哪个,因为大多数客户端只保留最后一个值。
真实响应也能放心用
全部在浏览器中运行。响应中的令牌、Cookie 和客户数据都不会被上传。
从哪里复制 API 响应
| 来源 | 如何复制 JSON |
|---|---|
| Chrome、Edge、Firefox | 开发者工具(F12)› 网络 › 选中请求 › 响应 › 复制 |
| Safari | 开发 › 显示网页检查器 › 网络 › 选中请求 › 响应 |
| curl | 只要响应体用 curl -s https://api.example.com/items,包含响应头用 curl -i |
| Postman、Insomnia | 响应面板 › Body › Raw,然后复制 |
| 服务器日志 | 复制整行日志。如果被截断,请直接打开日志文件。 |
为什么 API 响应难以阅读
API 通常返回压缩过的 JSON,没有空格和换行,因为这样体积更小、传输更快。于是包含数百条记录的响应会变成一行很长的文本。
格式化只增加缩进,不改变任何值,让你看清有哪些字段、数组如何嵌套,以及分页链接和错误详情在哪里。树形视图更进一步:可以折叠大数组,并显示每个数组包含多少项。
本页面能识别的问题
- 响应体前面的 HTTP 响应头,例如来自 curl -i 或代理日志。
- 旧版 API 返回的 JSONP,例如 callback({"items": []});。
- 双重编码的 JSON:被服务器或日志工具转义了两次的字符串,例如 "{\"id\":1}"。
- 重复的键,不同解析器对其处理方式不同。
- 超出 JavaScript 数字精度的大整数,这是数据库和社交平台 ID 的常见问题。
- 手写请求体中的语法错误,显示行号和列号,常见错误可一键修复。
JavaScript 中的大 ID
很多 API 返回 64 位整数 ID。JavaScript 只能精确表示不超过 9,007,199,254,740,991 的整数,所以 response.json() 会在不报任何错的情况下把 9007199254740993 变成 9007199254740992。
设计良好的 API 会以字符串形式返回这类 ID,例如 "id_str"。如果你的 API 没有这样做,请用支持 BigInt 的库解析响应,或请 API 提供方返回字符串 ID。本工具会显示准确的数字,帮你发现这个问题。
常见问题
可以粘贴带 HTTP 响应头的响应吗?
可以。如果文本以 HTTP/1.1 200 OK 这样的状态行开头,第一个空行之前的内容都会被视为响应头并跳过,只格式化响应体。
粘贴含有令牌或个人信息的响应安全吗?
页面在浏览器中处理所有内容,不会向服务器发送任何数据,所以数据只留在你的设备上。不过,与他人分享响应前,最好养成删除访问令牌的习惯。
为什么我的 JSON 到处都是 \"?
这段 JSON 被编码了两次,变成了包含 JSON 的字符串。本页面会自动解码。在你自己的代码中,可以调用两次 JSON.parse,或修改服务器,不要把数据再次转换成字符串。
什么是 JSONP?
JSONP 把 JSON 包在 JavaScript 函数调用中,例如 callback({...}),让旧浏览器可以从其他域名加载数据。现代 API 改用 CORS。本页面会去掉这层包装,方便你阅读数据。
路径怎么在代码里使用?
$.data[0].id 的意思是:取 data 数组的第一项,再取它的 id 字段。在 JavaScript 中写 response.data[0].id,在 jq 中写 .data[0].id。
能格式化 XML 或 GraphQL 响应吗?
GraphQL 响应本身就是 JSON,可以直接使用。XML 是另一种格式,本工具不支持。
相关工具
想开发什么吗?
告诉我们你想构建什么。
告诉我们您需要构建什么:从简单的网站到完整应用、AI 解决方案、自动化或定制系统都可以。