Response: json() 方法

Baseline 已廣泛支援

此特性已得到良好確立,可跨多種裝置和瀏覽器版本使用。自 2017 年 3 月起,所有瀏覽器均支援此特性。

注意:此功能在 Web Workers 中可用。

Response 介面的 json() 方法會讀取一個 Response 流並將其讀取完畢。它會返回一個 Promise,該 Promise 會解析為將響應體文字解析為 JSON 後的結果。

請注意,儘管該方法名為 json(),但其結果並不是 JSON,而是將 JSON 作為輸入並將其解析以生成 JavaScript 物件的結果。

語法

js
json()

引數

無。

返回值

一個 Promise,它解析為一個 JavaScript 物件。該物件可以是任何可以用 JSON 表示的內容 — 物件、陣列、字串、數字……

異常

AbortError DOMException

請求已被 中止

TypeError

因以下原因之一而丟擲:

SyntaxError

無法將響應體解析為 JSON。

示例

在我們 fetch JSON 示例(執行 fetch JSON 即時演示)中,我們使用 Request() 建構函式建立了一個新請求,然後使用它來獲取一個 .json 檔案。當 fetch 成功時,我們使用 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(` can be found in ${product.Location}. Cost: `);
      listItem.appendChild(document.createElement("strong")).textContent =
        `£${product.Price}`;
      myList.appendChild(listItem);
    }
  })
  .catch(console.error);

規範

規範
Fetch
# ref-for-dom-body-json①

瀏覽器相容性

另見