用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數據。
如果您有任何疑問或反饋,請隨時發表評論。
蟒蛇