技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

json.dump()將Python字典對(duì)象轉(zhuǎn)換為JSON格式寫入文件

作者:admin    時(shí)間:2022-1-12 10:30:23    瀏覽:

大多數(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格式寫入文件
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ù)后的文件
使用 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ù)。

  • 該縮進(jìn)參數(shù)指定在一行的開頭使用的空間。
  • 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 數(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}

您可能對(duì)以下文章也感興趣

標(biāo)簽: Python  
x
  • 站長(zhǎng)推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */