Response:json() 方法
>备注: 此特性在 Web Worker 中可用。
Response 接口的 json() 方法将 Response 流读取至结束。它返回一个 promise,会兑现将响应体文本解析为 JSON 的结果。
注意,尽管方法名为 json(),结果并不是 JSON,而是将 JSON 作为输入解析后得到的 JavaScript 对象。
语法
js
json()
参数
无。
返回值
一个 Promise,会兑现为 JavaScript 对象。该对象可以是 JSON 能表示的任何值——对象、数组、字符串、数字……
异常
AbortErrorDOMException-
请求已被中止。
TypeError-
由于以下原因之一而抛出:
- 响应体已被扰乱或锁定。
- 解码响应体内容时出错(例如,因为
Content-Encoding标头不正确)。
SyntaxError-
响应体无法解析为 JSON。
示例
在我们的 fetch JSON 示例(在线运行 fetch JSON)中,我们使用 Request() 构造函数创建新请求,然后用它来获取一个 .json 文件。获取成功后,我们使用 json() 读取并解析数据,再从得到的对象中按预期读取值,并插入列表项以展示商品数据。
js
const myList = document.querySelector("ul");
const myRequest = new Request("products.json");
fetch(myRequest)
.then((response) => response.json())
.then((data) => {
for (const product of data.products) {
const listItem = document.createElement("li");
listItem.appendChild(document.createElement("strong")).textContent =
product.Name;
listItem.append(` 可在 ${product.Location} 找到。价格:`);
listItem.appendChild(document.createElement("strong")).textContent =
`£${product.Price}`;
myList.appendChild(listItem);
}
})
.catch(console.error);
规范
| 规范 |
|---|
| Fetch> # ref-for-dom-body-json①> |