|
|
|
|
|
大多數(shù)情況下,當(dāng)你執(zhí)行 GET 請(qǐng)求時(shí),你會(huì)收到 JSON 格式的響應(yīng),你可以將 JSON 響應(yīng)存儲(chǔ)在文件中以供將來(lái)使用或供底層系統(tǒng)使用。
json.dump()將Python字典對(duì)象轉(zhuǎn)換為JSON格式寫入文件
例如,你有一個(gè)列表或字典或任何 Python 對(duì)象中的數(shù)據(jù),并且你希望將其編碼并以 JSON 的形式存儲(chǔ)在一個(gè)文件中。
在此示例中,我們將 Python 字典轉(zhuǎn)換為 JSON 格式并將其寫入文件。
import json
# assume you have the following dictionary
developer = {
"name": "admin",
"salary": 9000,
"email": "admin@webkaka.com"
}
print("Started writing JSON data into a file")
with open("developer.admin", "w") as write_file:
json.dump(developer, write_file) # encode dict into JSON
print("Done writing JSON data into .json file")
輸出:
Started writing JSON data into a file
Done writing JSON data into developerDetail.json file
使用 Python 編寫 JSON 編碼數(shù)據(jù)后的文件
json.dump()
的語(yǔ)法
json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
用途:用于將 Python 對(duì)象作為 JSON 格式的數(shù)據(jù)寫入文件。
使用的參數(shù):
obj
是一個(gè)Python可序列化對(duì)象,你希望將其轉(zhuǎn)換為JSON格式。fp
是一個(gè)文件指針,用于將 JSON 格式的數(shù)據(jù)寫入文件。Python json 模塊總是產(chǎn)生字符串對(duì)象,而不是字節(jié)對(duì)象,因此,fp.write()
必須支持字符串輸入。skipkeys
為真(默認(rèn)值:假),則不屬于基本類型的字典鍵 (str, int, float, bool, None) 將被跳過而不是引發(fā)一個(gè) TypeError。例如,如果你的字典鍵之一是自定義 Python 對(duì)象,則在將字典轉(zhuǎn)換為 JSON 時(shí)將省略該鍵。ensure_ascii
為 true(默認(rèn)值),則保證輸出所有傳入的非 ASCII 字符都已轉(zhuǎn)義。如果ensure_ascii為 false,這些字符將按原樣輸出。allow_nan
默認(rèn)情況下為 True,因此將使用它們的 JavaScript 等效項(xiàng)(NaN、Infinity、-Infinity)。如果為 False,則序列化超出范圍的浮點(diǎn)值(nan、inf、-inf)將是一個(gè) ValueError。indent
參數(shù)用于漂亮地打印 JSON 以使其更具可讀性。默認(rèn)值為(', ', ': '). 要獲得最緊湊的 JSON 表示,你應(yīng)該使用(',', ':') 消除空格。sort_keys
為真(默認(rèn):假),則字典的輸出將按鍵排序。將縮進(jìn)和漂亮打印的 JSON 數(shù)據(jù)寫入文件
如果用戶想要讀取一個(gè) JSON 文件,那么它必須是可讀且組織良好的,因此使用它的人將對(duì)數(shù)據(jù)結(jié)構(gòu)有更好的理解。dump()
方法提供以下參數(shù)來(lái)漂亮打印 JSON 數(shù)據(jù)。
json.dump()
方法的separator
參數(shù),你可以指定鍵和值之間的任何分隔符。sort_keys
通過按鍵JSON數(shù)據(jù)進(jìn)行排序。讓我們看看如何將打印精美的 JSON 數(shù)據(jù)寫入文件。
import json
developer = {
"name": "admin",
"salary": 9000,
"skills": ["Raspberry pi", "Machine Learning", "Web Development"],
"email": "admin@webkaka.com"
}
with open("developerPrettyPrint.json", "w") as write_file:
json.dump(developer, write_file, indent=4, separators=(", ", ": "), sort_keys=True)
print("Done writing pretty printed JSON data into a file")
輸出:
Done writing pretty printed JSON data into a file
寫入漂亮打印的 JSON 數(shù)據(jù)后的文件
通過更改 JSON 鍵值分隔符來(lái)節(jié)省文件空間的緊湊編碼
如果你不是在讀取文件,而只需要將 JSON 數(shù)據(jù)寫入文件以供底層系統(tǒng)或應(yīng)用程序使用,則可以通過緊湊編碼將 JSON 數(shù)據(jù)寫入文件。
我們可以通過更改 JSON 鍵值分隔符將 JSON 數(shù)據(jù)寫入文件。你可以根據(jù)需要更改 JSON 表示。使用separator
參數(shù),你可以指定鍵和值之間的任何分隔符。
為了限制 JSON 文件的大小,我們可以刪除 JSON 鍵值之間的額外間距進(jìn)行緊湊編碼(separators=(',', ':')
)。使用此分隔符,我們可以從 JSON 中刪除空格,以使 JSON 更緊湊,并節(jié)省通過 HTTP 發(fā)送的字節(jié)。
現(xiàn)在,讓我們看看這個(gè)例子。
import json
developer_dict = {
"name": "admin",
"salary": 9000,
"skills": ["Raspberry pi", "Machine Learning", "Web Development"],
"companies": ["Google", "Facebook", "IBM"],
"email": "admin@webkaka.com"
}
print("Started writing compact JSON data into a file")
with open("developerDetailCompact.json", "w") as write_file:
json.dump(developer_dict, write_file, separators=(',', ':'))
print("Done writing compact JSON data into json file")
輸出:
Started writing compact JSON data into a file
Done writing compact JSON data into .json file
文件內(nèi)容:
{"name":"admin","salary":9000,"skills":["Raspberry pi","Machine Learning","Web Development"],"companies":["Google","Facebook","IBM"],"email":admin@webkaka.com}