在Python中,json
模塊提供了處理JSON(JavaScript Object Notation)數據的功能。JSON是一種輕量級的數據交換格式,適合於人和機器讀取。Python的 json
模塊可以方便地將 Python對象轉換為JSON字符串,或者將JSON字符串解析為Python對象。
使用 json.dumps()
方法可以將 Python 對象(如字典、列表等)轉換為 JSON 字符串。
import json
data = {
"name": "Alice",
"age": 25,
"is_student": False,
"subjects": ["Math", "Science"]
}
json_str = json.dumps(data)
print(json_str)
輸出:
{"name": "Alice", "age": 25, "is_student": false, "subjects": ["Math", "Science"]}
使用 json.loads()
可以將 JSON 字符串解析為 Python 對象,通常解析為字典或列表。
import json
json_str = '{"name": "Alice", "age": 25, "is_student": false, "subjects": ["Math", "Science"]}'
data = json.loads(json_str)
print(data)
print(data["name"]) # 訪問 Python 字典中的數據
輸出:
{'name': 'Alice', 'age': 25, 'is_student': False, 'subjects': ['Math', 'Science']}
Alice
使用 json.dump()
方法可以將 Python 對象寫入 JSON 文件。
import json
data = {
"name": "Alice",
"age": 25,
"is_student": False,
"subjects": ["Math", "Science"]
}
with open('data.json', 'w') as file:
json.dump(data, file)
這樣會將數據以 JSON 格式寫入到 data.json
文件中。
使用 json.load()
方法可以從 JSON 文件中讀取數據,並將其解析為 Python 對象。
import json
with open('data.json', 'r') as file:
data = json.load(file)
print(data)
當使用 json.dumps()
或 json.dump()
時,可以使用 indent
參數來讓輸出的 JSON 格式更加美觀,增加縮進級別。
import json
data = {
"name": "Alice",
"age": 25,
"is_student": False,
"subjects": ["Math", "Science"]
}
json_str = json.dumps(data, indent=4)
print(json_str)
輸出:
{
"name": "Alice",
"age": 25,
"is_student": false,
"subjects": [
"Math",
"Science"
]
}
如果 JSON 包含非 ASCII 字符,例如中文或其他特殊符號,可以使用 ensure_ascii=False
來確保這些字符能夠正確顯示。
import json
data = {"name": "李四", "age": 30}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
輸出:
{"name": "李四", "age": 30}
可以通過 sort_keys=True
參數來對輸出的 JSON 中的鍵進行排序。
import json
data = {
"name": "Alice",
"age": 25,
"is_student": False,
"subjects": ["Math", "Science"]
}
json_str = json.dumps(data, indent=4, sort_keys=True)
print(json_str)
輸出:
{
"age": 25,
"is_student": false,
"name": "Alice",
"subjects": [
"Math",
"Science"
]
}
在 json
模塊中,JSON 和 Python 對象之間存在對應關係:
JSON | Python |
---|---|
object |
dict |
array |
list |
string |
str |
number |
int /float |
true |
True |
false |
False |
null |
None |
在處理 JSON 時,可能會遇到無效的 JSON 字符串,這時會拋出 json.JSONDecodeError
異常。我們可以使用 try-except
來捕捉和處理這類異常。
import json
json_str = '{"name": "Alice", "age": 25, "is_student": False'
try:
data = json.loads(json_str)
except json.JSONDecodeError as e:
print(f"解析 JSON 出錯: {e}")
輸出:
解析 JSON 出錯: Expecting ',' delimiter: line 1 column 42 (char 41)