如何在 Python 中使用 `json` 模塊?
在Python中,json 模塊提供了一個(gè)非常方便的方法來(lái)處理JSON數(shù)據(jù)。無(wú)論是將Python對(duì)象轉(zhuǎn)換為JSON格式(序列化),還是將JSON格式的數(shù)據(jù)解析為Python對(duì)象(反序列化),json 模塊都能滿(mǎn)足你的需求。

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















 
 
 








 
 
 
 