在 Python 中從 URL 獲取 JSON

每當我們希望使用 URL 從 Web 伺服器獲取任何資料時,該資料都應具有某種特定的格式。通常,每當我們想從 Web 伺服器獲取任何資料時,我們都會使用 JSON 或 XML 格式。

與 XML 相比,我們更喜歡 JSON,因為它在軟體行業非常流行。在 Python 中,有各種庫來處理 JSON。

在整個教程中,我們將使用 jsonrequests 模組,它們在 Python 中可用。

我們將要獲取的 JSON 資料來自以下 URL。該 URL 允許我們獲取與 user 相關的所有資料,例如名稱,電子郵件,地址等。它是免費使用的。

https://jsonplaceholder.typicode.com/users

就 Restful API 而言,URL 被稱為端點。在整個教程中,我們將交替使用這兩個詞。在上面的 URL 中,/users 指的是端點。

如果在瀏覽器中開啟上述 URL,你將以 JSON 格式檢視與 user 相關的所有資料。如下所示。

[
  {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "suite": "Apt. 556",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
    "phone": "1-770-736-8031 x56442",
    "website": "hildegard.org",
    "company": {
      "name": "Romaguera-Crona",
      "catchPhrase": "Multi-layered client-server neural-net",
      "bs": "harness real-time e-markets"
    }
  },
]

請注意,在上面的程式碼塊中,我們僅向你顯示了與單個使用者有關的 JSON 資料。這僅是出於解釋目的。但是,如果你訪問 URL,則將看到所有使用者的資料。

JSON 是指 JavaScript 物件表示法。它用於在伺服器和客戶端之間傳送和接收資料,反之亦然。在這裡,請不要與 JavaScript 一詞混淆; JSON 獨立於任何程式語言。在 JSON 中,我們使用兩種型別的方括號來格式化資料。一個是方括號 [],代表一個陣列或一個列表,另一個是花括號 {},它代表一個物件

JSON 中的資料將始終以引號""內的鍵值對的形式出現。因此,如果要訪問任何值,則必須使用與該值關聯的。例如,假設我們要從上述 JSON 資料訪問使用者名稱;我們將使用 name 鍵獲取值 Leanne Graham,這是第一個使用者的名稱。另外,請注意,JSON 中不允許使用任何註釋。

在 Python 中獲取和訪問 JSON 資料

首先,我們需要匯入 requestsjson 模組以獲取和訪問資料。

import requests, json

從 URL 提取資料並將其轉換為字串

我們必須在此處執行的第一步是使用 requests 庫獲取 JSON 資料。

url = requests.get("https://jsonplaceholder.typicode.com/users")
text = url.text
print(type(text))

輸出:

<class 'str'>

requests 庫具有稱為 get() 的方法,該方法將 URL 作為引數,然後將 GET 請求傳送到指定的 URL。我們從伺服器獲得的響應儲存在名為 url 的變數中。

儲存在 url 變數中的響應需要藉助 .text 方法作為 url.text 轉換為字串。然後,我們將結果儲存在 text 變數中。如果列印 text 變數的型別,它將是 <class 'str'> 型別。

解析 JSON 資料

解析是將字串資料轉換為 JSON 格式的過程。為此,我們將使用 json 模組。

data = json.loads(text)
print(type(data))

輸出:

<class 'list'>

json 模組帶有一個稱為 loads() 的方法,loads() 中的 s 代表字串。由於我們想將字串資料轉換為 JSON,因此我們將使用此方法。在此方法內部,我們必須傳遞包含字串資料 json.loads(text)text 變數,並將其儲存在 data 變數內。

現在,data 將具有整個 JSON 響應。如果列印 data 變數的型別,則它將是 <class 'list'> 型別,因為在這種情況下,JSON 響應以方括號 [] 開頭,而在 Python 中,列表以方括號開始。

訪問 JSON 資料

既然我們已經解析了 JSON 資料,就可以使用 data 變數訪問我們想要的單個值了。要訪問第一個使用者的詳細資訊,例如姓名和地址,我們可以執行以下操作。

import json, requests 

url = requests.get("https://jsonplaceholder.typicode.com/users")
text = url.text

data = json.loads(text)

user = data[0]
print(user['name'])

address = user['address']
print(address)

輸出:

Leanne Graham
{'street': 'Kulas Light', 'suite': 'Apt. 556', 'city': 'Gwenborough', 'zipcode': '92998-3874', 'geo': {'lat': '-37.3159', 'lng': '81.1496'}}

要訪問使用者列表中的第一個使用者,我們必須使用 JSON 資料中的 0 索引,該索引儲存在名為 data 的變數中,然後將該第一個使用者的全部詳細資訊儲存在 user 中多變的。現在,此使用者是一個物件,其中包含與該使用者有關的所有詳細資訊。要訪問該名稱,我們只需要在 user 變數(如 user['name'])中傳遞 name 鍵,然後進行列印即可。它將在控制檯內列印使用者名稱。

要訪問該地址,我們必須在使用者變數(即 user['address'])中傳遞 address 鍵,然後將其儲存在名為 address 的變數中,然後進行列印。這將為你提供一個物件,其中將包含與地址欄位相關的所有特定詳細資訊,例如公寓號,街道名稱,郵政編碼等。假設在這些詳細資訊中,你只需要使用者的 zipcode;那麼你必須在 address 物件中傳遞 zipcode 程式碼鍵。

相關文章 - Python JSON

  • 用 Python 將 JSON 寫入檔案
  • 相關文章 - Python API

  • 如何漂亮列印 JSON 檔案