如何在 Python 中使用 `json` 模塊?
在Python中,json 模塊提供了一個非常方便的方法來處理JSON數據。無論是將Python對象轉換為JSON格式(序列化),還是將JSON格式的數據解析為Python對象(反序列化),json 模塊都能滿足你的需求。
序列化:從Python對象到JSON
使用 json.dumps()
json.dumps() 函數用于將Python對象轉換為JSON格式的字符串。
import json
# Python對象
data = {
"name": "Alice",
"age": 25,
"is_student": False
}
# 將Python對象轉換為JSON字符串
json_str = json.dumps(data, ensure_ascii=False)
print("JSON字符串:", json_str)
在這個例子中,我們定義了一個包含一些基本信息的字典,并使用 json.dumps() 方法將其轉換為JSON格式的字符串。ensure_ascii=False 參數確保非ASCII字符能夠正確顯示。
寫入文件
如果你想要直接將JSON數據寫入文件,可以使用 json.dump() 方法:
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
print("數據已寫入文件")
這里,indent=4 參數使得輸出更加美觀易讀。
反序列化:從JSON到Python對象
使用 json.loads()
json.loads() 函數用于將JSON格式的字符串轉換為Python對象。
json_string = '{"name": "Bob", "age": 30, "is_student": true}'
parsed_data = json.loads(json_string)
print("解析后的數據:", parsed_data)
這個例子展示了如何將一個JSON字符串轉換回Python對象(在這個案例中是一個字典)。
從文件讀取
如果你想從文件中讀取JSON數據并轉換為Python對象,可以使用 json.load() 方法:
with open('data.json', 'r', encoding='utf-8') as f:
loaded_data = json.load(f)
print("從文件加載的數據:", loaded_data)
其他常用選項
sort_keys:如果設置為 True,則輸出的JSON對象中的鍵會按照字母順序排序。
separators:允許你自定義分隔符,默認是 (', ', ': ')。例如,為了生成最緊湊的JSON表示形式,可以使用 (',', ':')。
compact_json = json.dumps(data, separators=(',', ':'))
print("緊湊的JSON:", compact_json)
注意事項
類型對應:需要注意的是,Python與JSON之間存在特定的數據類型映射規則。例如,Python中的 dict 對應于JSON中的對象,list 和 tuple 都映射為JSON數組等。
安全性:雖然 json 模塊非常適合處理普通的JSON數據交換任務,但它并不適合處理不可信來源的數據。對于更復雜或潛在不安全的數據源,考慮使用其他方法如 pickle(盡管它也有自己的安全問題),或者使用專門的安全庫。