直接调用 response.json() 方法可解析 JSON 响应,但需先检查 response.ok 或 status;.json() 返回 Promise,须链式调用;解析失败会抛错,需 catch 处理;响应体只能读取一次,重复使用需 clone。

直接调用 response.json() 方法即可,它返回一个 Promise,解析成功后得到 JavaScript 对象或数组。
确保响应状态正常再解析
Fetch 不会因 HTTP 错误状态(如 404、500)自动拒绝 Promise,需手动检查 response.ok 或 response.status:
-
response.ok为true表示状态码在 200–299 范围内 - 建议在
.json()前加判断,避免解析空响应或错误体
正确链式调用 .json()
response.json() 必须在 Promise 链中调用,不能直接读取:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
- ✅ 正确:
fetch(url).then(res => res.json()).then(data => {...}) - ❌ 错误:
fetch(url).then(res => { const data = res.json(); ... })—— 此时data是 Promise,不是实际数据
处理解析失败的情况
如果响应体不是合法 JSON,.json() 会抛出语法错误,需用 catch 捕获:
立即学习“Java免费学习笔记(深入)”;
- 常见原因:后端返回 HTML 错误页、空响应、乱码或非 JSON 格式文本
- 可在
.json()后接.catch(e => console.error('JSON 解析失败:', e))
注意响应体只能读取一次
response.json()、response.text()、response.blob() 等方法都会消耗响应体流,不可重复调用:
- 若需同时获取 JSON 和其他格式,先用
response.clone()复制响应对象 - 例如:
const cloned = response.clone(); const json = response.json(); const text = cloned.text();

















