用Python解析JSON數據

JSON是一種人類可讀的基於文本的數據格式。 它與語言無關,用於應用程序之間的數據交換。

在本文中,我們將說明如何在Python中解析JSON數據。

Python JSON#

json 允許您編碼和解碼JSON數據的模塊是Python標準庫的一部分。

JSON是代表數據的字符串。 編碼或序列化意味着將Python對象轉換為JSON字符串,可以將其存儲在文件中或通過網絡傳輸。 解碼或反序列化是將JSON字符串轉換為Python對象的反向編碼過程。

下表顯示了Python對象及其等效的JSON表示形式:

PythonJSONdictobjectlist,tuplearraystrstringint,floatnumberTruetrueFalseFalseNonenull

要使用JSON,只需將模塊導入文件頂部:

import json

在Python中編碼JSON#

json 模塊有兩種將Python對象編碼為JSON格式的字符串的方法: dump()dumps()

dump() 方法將輸出發送到類似文件的對象。 它帶有兩個位置參數:要編碼的對象和類似文件的對象。 這是一個例子:

data = {
    "country": "Germany",
    "vehicle": {
        "name": "Volkswagen",
        "model": "T-Roc"
    }
}

with open("file.json", "w") as file:
    json.dump(data, file)

如果運行腳本,它將創建一個名為 file.json

file.json

{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}

dumps() 方法的工作原理與 dump() 但不是將輸出發送到類似文件的對象,而是返回一個字符串:

data = {
    "country": "Germany",
    "vehicle": {
        "name": "Volkswagen",
        "model": "T-Roc"
    }
}

json.dumps(data)
'{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}'

兩種方法都接受相同的關鍵字參數。 例如,如果您正在分析或調試JSON dat,則可能需要指定縮進級別:

data = {
    "country": "Germany",
    "vehicle": {
        "name": "Volkswagen",
        "model": "T-Roc"
    }
}

print(json.dumps(data, indent=2))
{
  "country": "Germany",
  "vehicle": {
    "name": "Volkswagen",
    "model": "T-Roc"
  }
}

在Python中解碼JSON#

要將JSON編碼的數據轉換為Python對象,請使用 load()loads() 方法。

load() 方法從類似文件的對象中讀取JSON結構,並將其轉換為Python對象。

假設我們有以下JSON文件:

file.json

[
  {
    "userId": 1,
    "id": 1,
    "title": "Meet with Lisa",
    "completed": true
  },
  {
    "userId": 1,
    "id": 2,
    "title": "Design a prototype",
    "completed": false
  }
]

要將JSON數據轉換為Python表示形式,可以使用如下所示的代碼:

import json

with open('file.json') as f:
  data = json.load(f)

type(data)

JSON轉換為Python列表,您可以在代碼中使用它:

<class 'list'>

loads() 方法將包含JSON文檔的字符串轉換為Python對象:

import json

json_str= '{"userId": "1", "id": "1", "title": "Meet with Lisa", "completed": "True"}'

print(json.loads(json_str))

該字符串將轉換為Python字典:

{'userId': '1', 'id': '1', 'title': 'Meet with Lisa', 'completed': 'True'}

這是一個更高級的示例,顯示了如何發出api請求和解碼JSON數據:

import json
import requests

response = requests.get("https://jsonplaceholder.typicode.com/users")
users = json.loads(response.text)

print(users)

結論#

我們向您介紹了如何在Python中編碼和解碼JSON數據。

如果您有任何疑問或反饋,請隨時發表評論。

蟒蛇

Sidebar