用 Python 將 JSON 寫入檔案

Vaibhav Vaibhav 2022年4月14日 2021年4月29日
用 Python 將 JSON 寫入檔案

JSON 是一種輕量級且人類可讀的檔案格式,在行業中大量使用。JSON 代表 JavaScript Object Notation。顧名思義,JSON 在 Web 開發人員中非常流行,並且在 Web 應用程式中大量使用以從伺服器或其他應用程式傳送和檢索資料。

Python 隨附了許多內建的軟體包或模組,並通過 Internet 提供了許多外部模組供我們使用。有趣的是,它還具有一個內建模組 json,用於處理 JSON 資料。

在 Python 中,可以用兩種方式表示 JSON。首先,作為字串。JSON 字串如下所示。

jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'

在將 JSON 表示為字串時,請確保僅使用雙引號("")來包裝鍵和字串值。JSON 不支援單引號,如果使用單引號,則會引發錯誤。

第二種方法是使用 Python 物件或俗稱的 Python 字典。它具有與 JSON 類似的語法。

以 Python 字典的形式表示的 JSON 看起來像這樣。

jsonObject = {
    "name": "DelftStack",
    "email": "DelftStack@domain.com",
    "age": 20,
    "country": "Netherlands", 
    "city": "Delft"
}

同樣,請確保僅使用雙引號。

使用 Python 中的 json 模組將 JSON 寫入檔案

假設你有一個以字串形式儲存 JSON 的變數。因此,要將其寫入 JSON 檔案,你可以使用以下程式碼。

import json

fileName = "my-data.json"
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
jsonString = json.loads(jsonString)

file = open(fileName, "w")
json.dump(jsonString, file)
file.close()

首先,我們匯入了 json 模組。然後,我們將 JSON 檔名和 JSON 字串本身儲存在兩個變數中。然後,我們將以在寫入模式下選擇的名稱建立並開啟一個新檔案。

然後,我們使用 json 模組中的 loads 函式將 JSON 字串轉換為 python 字典以將其寫入檔案。該函式接受有效的 JSON 字串,並將其轉換為 Python 字典。

請注意,如果為此函式提供了無效的字串,則會引發 json.decoder.JSONDecodeError 錯誤。因此,請確保你輸入正確的字串,或者可以使用 try-except-finally 塊進行錯誤處理。

接下來,我們使用 json 模組提供給我們的 dump() 方法。此方法接受 python 字典和檔案描述符作為其引數,並將字典的資料寫入檔案。

當且僅當檔案未以二進位制格式開啟時,才可以使用 dump() 方法,即,"wb""rb"將不起作用並導致 TypeError

最後,我們關閉檔案,程式退出。根據你在程式中定義的名稱的 JSON 檔案將在當前目錄中建立。

如果工作目錄中存在具有相同名稱和相同副檔名的檔案,則該檔案的內容將被覆蓋。

現在,假設你希望將 Python 物件或 Python 字典寫入 JSON 檔案。在這種情況下,請參考以下程式碼段。

import json

fileName = "my-data.json"
jsonObject = {
    "name": "DelftStack",
    "email": "DelftStack@domain.com",
    "age": 20,
    "country": "Netherlands", 
    "city": "Delft"
}

file = open(fileName, "w")
json.dump(jsonObject, file)
file.close()

在這種情況下,我們已經有了 Python 物件或字典,並且如上所述,dump() 接受字典作為引數並將其寫入檔案描述符。因此,我們以寫入模式開啟檔案,使用 dump() 方法將資料寫入檔案,然後關閉檔案。

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub

相關文章 - Python JSON